|
Blender V4.3
|
#include "MEM_guardedalloc.h"#include "BLI_dial_2d.h"#include "BLI_math_base_safe.h"#include "BLI_math_matrix.h"#include "BLI_math_vector_types.hh"#include "BLI_rect.h"#include "BKE_context.hh"#include "GPU_immediate.hh"#include "GPU_immediate_util.hh"#include "GPU_matrix.hh"#include "GPU_select.hh"#include "GPU_shader.hh"#include "GPU_state.hh"#include "RNA_access.hh"#include "RNA_define.hh"#include "WM_api.hh"#include "WM_types.hh"#include "ED_gizmo_library.hh"#include "ED_screen.hh"#include "../gizmo_library_intern.hh"Go to the source code of this file.
Classes | |
| struct | RectTransformInteraction |
Macros | |
| #define | MUL_V2_V3_M4_FINAL(test_co, mouse_co) mul_v3_m4v3(test_co, data->orig_matrix_final_no_offset, blender::float3{UNPACK2(mouse_co), 0.0}) |
Functions | |
| static void | gizmo_cage2d_draw_intern (wmGizmo *gz, const bool select, const bool highlight, const int select_id) |
| static void | gizmo_cage2d_draw_select (const bContext *, wmGizmo *gz, int select_id) |
| static void | gizmo_cage2d_draw (const bContext *, wmGizmo *gz) |
| static int | gizmo_cage2d_get_cursor (wmGizmo *gz) |
| static int | gizmo_cage2d_test_select (bContext *C, wmGizmo *gz, const int mval[2]) |
| static void | gizmo_cage2d_setup (wmGizmo *gz) |
| static int | gizmo_cage2d_invoke (bContext *C, wmGizmo *gz, const wmEvent *event) |
| static void | gizmo_constrain_from_scale_part (int part, bool r_constrain_axis[2]) |
| static void | gizmo_pivot_from_scale_part (int part, float r_pt[2]) |
| static int | gizmo_cage2d_modal (bContext *C, wmGizmo *gz, const wmEvent *event, eWM_GizmoFlagTweak) |
| static void | gizmo_cage2d_property_update (wmGizmo *gz, wmGizmoProperty *gz_prop) |
| static void | gizmo_cage2d_exit (bContext *C, wmGizmo *gz, const bool cancel) |
Box Draw Style | |
Useful for 3D views, see: ED_GIZMO_CAGE2D_STYLE_BOX | |
| static void | cage2d_draw_box_corners (const rctf *r, const float margin[2], const float color[3], const float line_width) |
| static void | cage2d_draw_box_interaction (const float color[4], const int highlighted, const float size[2], const float margin[2], const float line_width, const bool is_solid, const int draw_options) |
Circle Draw Style | |
Useful for 2D views, see: ED_GIZMO_CAGE2D_STYLE_CIRCLE | |
| static void | imm_draw_point_aspect_2d (uint pos, float x, float y, float rad_x, float rad_y, bool solid) |
| static void | cage2d_draw_rect_wire (const rctf *r, const float margin[2], const float color[3], const int transform_flag, const int draw_options, const float line_width) |
| static void | cage2d_draw_circle_wire (const float color[3], const float size[2], const float margin[2], const float line_width) |
| static void | cage2d_draw_rect_corner_handles (const rctf *r, const int highlighted, const float margin[2], const float color[3], const int transform_flag, bool solid) |
| static void | cage2d_draw_rect_edge_handles (const rctf *r, const int highlighted, const float size[2], const float margin[2], const float color[3], bool solid) |
Cage Gizmo API | |
| static void | GIZMO_GT_cage_2d (wmGizmoType *gzt) |
| void | ED_gizmotypes_cage_2d () |
Cage Gizmo | |
Rectangular or circular gizmo acting as a 'cage' around its content. Interacting scales or translates the gizmo. 2D Gizmo | |
| #define | GIZMO_MARGIN_OFFSET_SCALE 1.5f |
| #define | CIRCLE_RESOL 32 |
| static int | gizmo_cage2d_transform_flag_get (const wmGizmo *gz) |
| static void | gizmo_calc_rect_view_scale (const wmGizmo *gz, const float dims[2], float scale[2]) |
| static void | gizmo_calc_rect_view_margin (const wmGizmo *gz, const float dims[2], float margin[2]) |
| #define CIRCLE_RESOL 32 |
Definition at line 47 of file cage2d_gizmo.cc.
Referenced by cage2d_draw_circle_wire().
| #define GIZMO_MARGIN_OFFSET_SCALE 1.5f |
Definition at line 45 of file cage2d_gizmo.cc.
Referenced by cage2d_draw_rect_corner_handles(), and gizmo_cage2d_test_select().
| #define MUL_V2_V3_M4_FINAL | ( | test_co, | |
| mouse_co ) mul_v3_m4v3(test_co, data->orig_matrix_final_no_offset, blender::float3{UNPACK2(mouse_co), 0.0}) |
Referenced by gizmo_cage2d_modal().
|
static |
Definition at line 95 of file cage2d_gizmo.cc.
References GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_PRIM_LINES, GPU_SHADER_3D_POLYLINE_UNIFORM_COLOR, GPU_vertformat_attr_add(), GPU_viewport_size_get_f(), immBegin(), immBindBuiltinProgram(), immEnd(), immUnbindProgram(), immUniform1f(), immUniform2fv(), immUniformColor3fv(), immVertex3f(), immVertexFormat(), pos, rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.
Referenced by gizmo_cage2d_draw_intern().
|
static |
Definition at line 139 of file cage2d_gizmo.cc.
References ARRAY_SET_ITEMS, attr_id, BLI_assert, col, ED_GIZMO_CAGE2D_PART_ROTATE, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X_MIN_Y, ED_GIZMO_CAGE2D_PART_SCALE_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MIN_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_Y, ED_GIZMO_CAGE2D_PART_TRANSLATE, ED_GIZMO_CAGE_DRAW_FLAG_XFORM_CENTER_HANDLE, ELEM, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_PRIM_LINE_STRIP, GPU_PRIM_LINES, GPU_PRIM_NONE, GPU_PRIM_POINTS, GPU_PRIM_TRI_FAN, GPU_SHADER_3D_FLAT_COLOR, GPU_SHADER_3D_POLYLINE_FLAT_COLOR, GPU_vertformat_attr_add(), GPU_viewport_size_get_f(), immAttr3f(), immAttr3fv(), immBegin(), immBindBuiltinProgram(), immEnd(), immUnbindProgram(), immUniform1f(), immUniform2fv(), immVertex2fv(), immVertexFormat(), pos, verts, rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.
Referenced by gizmo_cage2d_draw_intern().
|
static |
Definition at line 554 of file cage2d_gizmo.cc.
References CIRCLE_RESOL, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_PRIM_POINTS, GPU_SHADER_3D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_AA, GPU_SHADER_3D_POLYLINE_UNIFORM_COLOR, GPU_vertformat_attr_add(), GPU_viewport_size_get_f(), imm_draw_circle_wire_aspect_3d(), immBegin(), immBindBuiltinProgram(), immEnd(), immUnbindProgram(), immUniform1f(), immUniform2fv(), immUniformColor3fv(), immVertex3f(), immVertexFormat(), is_zero_v2(), and pos.
Referenced by gizmo_cage2d_draw_intern().
|
static |
Definition at line 584 of file cage2d_gizmo.cc.
References BLI_rctf_cent_x(), ED_GIZMO_CAGE2D_PART_SCALE_MAX_X_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MIN_Y, ED_GIZMO_CAGE_XFORM_FLAG_ROTATE, float, GIZMO_MARGIN_OFFSET_SCALE, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_SHADER_3D_UNIFORM_COLOR, GPU_vertformat_attr_add(), imm_draw_circle_fill_aspect_2d(), imm_draw_circle_wire_aspect_2d(), imm_draw_point_aspect_2d(), immBindBuiltinProgram(), immUnbindProgram(), immUniformColor3fv(), immVertexFormat(), int, pos, rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.
Referenced by gizmo_cage2d_draw_intern().
|
static |
Definition at line 627 of file cage2d_gizmo.cc.
References ED_GIZMO_CAGE2D_PART_SCALE_MAX_X, ED_GIZMO_CAGE2D_PART_SCALE_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X, ED_GIZMO_CAGE2D_PART_SCALE_MIN_Y, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_SHADER_3D_UNIFORM_COLOR, GPU_vertformat_attr_add(), imm_draw_point_aspect_2d(), immBindBuiltinProgram(), immUnbindProgram(), immUniformColor3fv(), immVertexFormat(), pos, rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.
Referenced by gizmo_cage2d_draw_intern().
|
static |
Definition at line 493 of file cage2d_gizmo.cc.
References BLI_rctf_cent_x(), BLI_rctf_cent_y(), ED_GIZMO_CAGE_DRAW_FLAG_XFORM_CENTER_HANDLE, ED_GIZMO_CAGE_XFORM_FLAG_ROTATE, ED_GIZMO_CAGE_XFORM_FLAG_TRANSLATE, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_PRIM_LINES, GPU_SHADER_3D_POLYLINE_UNIFORM_COLOR, GPU_vertformat_attr_add(), GPU_viewport_size_get_f(), immBegin(), immBindBuiltinProgram(), immEnd(), immUnbindProgram(), immUniform1f(), immUniform2fv(), immUniformColor3fv(), immVertex3f(), immVertexFormat(), pos, rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.
Referenced by gizmo_cage2d_draw_intern().
| void ED_gizmotypes_cage_2d | ( | ) |
Definition at line 1371 of file cage2d_gizmo.cc.
References GIZMO_GT_cage_2d(), and WM_gizmotype_append().
Referenced by ED_spacetypes_init().
Definition at line 830 of file cage2d_gizmo.cc.
References gizmo_cage2d_draw_intern(), wmGizmo::state, and WM_GIZMO_STATE_HIGHLIGHT.
Referenced by GIZMO_GT_cage_2d().
|
static |
Definition at line 661 of file cage2d_gizmo.cc.
References ARRAY_SIZE, BLI_assert, cage2d_draw_box_corners(), cage2d_draw_box_interaction(), cage2d_draw_circle_wire(), cage2d_draw_rect_corner_handles(), cage2d_draw_rect_edge_handles(), cage2d_draw_rect_wire(), wmGizmo::color, ED_GIZMO_CAGE2D_PART_ROTATE, ED_GIZMO_CAGE2D_PART_SCALE, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X_MIN_Y, ED_GIZMO_CAGE2D_PART_SCALE_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MIN_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_Y, ED_GIZMO_CAGE2D_PART_TRANSLATE, ED_GIZMO_CAGE2D_STYLE_BOX, ED_GIZMO_CAGE2D_STYLE_BOX_TRANSFORM, ED_GIZMO_CAGE2D_STYLE_CIRCLE, ED_GIZMO_CAGE_DRAW_FLAG_XFORM_CENTER_HANDLE, ED_GIZMO_CAGE_XFORM_FLAG_ROTATE, ED_GIZMO_CAGE_XFORM_FLAG_SCALE, ED_GIZMO_CAGE_XFORM_FLAG_TRANSLATE, gizmo_cage2d_transform_flag_get(), gizmo_calc_rect_view_margin(), gizmo_color_get(), GPU_blend(), GPU_BLEND_ALPHA, GPU_BLEND_NONE, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_matrix_mul, GPU_matrix_pop(), GPU_matrix_push(), GPU_select_load_id(), GPU_SHADER_3D_UNIFORM_COLOR, GPU_vertformat_attr_add(), wmGizmo::highlight_part, immBindBuiltinProgram(), immRectf(), immUnbindProgram(), immUniformColor4f(), immVertexFormat(), wmGizmo::line_width, pos, wmGizmo::ptr, RNA_enum_get(), RNA_float_get_array(), select(), WM_gizmo_calc_matrix_final(), rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.
Referenced by gizmo_cage2d_draw(), and gizmo_cage2d_draw_select().
For when we want to draw 2d cage in 3d views.
Definition at line 825 of file cage2d_gizmo.cc.
References gizmo_cage2d_draw_intern().
Referenced by GIZMO_GT_cage_2d().
Definition at line 1290 of file cage2d_gizmo.cc.
References copy_m4_m4(), wmGizmo::interaction_data, wmGizmo::matrix_offset, MEM_SAFE_FREE, wmGizmoProperty::type, WM_gizmo_target_property_find(), and WM_gizmo_target_property_float_set_array().
Referenced by GIZMO_GT_cage_2d().
Definition at line 836 of file cage2d_gizmo.cc.
References ED_GIZMO_CAGE2D_PART_ROTATE, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X_MIN_Y, ED_GIZMO_CAGE2D_PART_SCALE_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MIN_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_Y, ED_GIZMO_CAGE2D_PART_TRANSLATE, wmGizmoGroupType::flag, wmGizmo::highlight_part, wmGizmo::parent_gzgroup, wmGizmoGroup::type, WM_CURSOR_CROSS, WM_CURSOR_DEFAULT, WM_CURSOR_NSEW_SCROLL, and WM_GIZMOGROUPTYPE_3D.
Referenced by GIZMO_GT_cage_2d().
Definition at line 1008 of file cage2d_gizmo.cc.
References copy_m4_m4(), data, gizmo_window_project_2d(), wmGizmo::interaction_data, wmGizmo::matrix_offset, MEM_callocN, wmEvent::mval, OPERATOR_RUNNING_MODAL, WM_gizmo_calc_matrix_final_no_offset(), and zero_v2().
Referenced by GIZMO_GT_cage_2d().
|
static |
Definition at line 1083 of file cage2d_gizmo.cc.
References BLI_assert, BLI_dial_angle(), BLI_dial_init(), copy_m4_m4(), copy_v3_v3(), CTX_wm_region(), CTX_wm_window(), ED_GIZMO_CAGE2D_PART_ROTATE, ED_GIZMO_CAGE2D_PART_TRANSLATE, ED_GIZMO_CAGE2D_STYLE_CIRCLE, ED_GIZMO_CAGE_XFORM_FLAG_SCALE_SIGNED, ED_GIZMO_CAGE_XFORM_FLAG_SCALE_UNIFORM, ED_GIZMO_CAGE_XFORM_FLAG_TRANSLATE, ED_region_tag_redraw_editor_overlays(), gizmo_constrain_from_scale_part(), gizmo_pivot_from_scale_part(), gizmo_window_project_2d(), wmGizmo::highlight_part, wmGizmo::interaction_data, invert_m4_m4(), KM_SHIFT, len_v2(), len_v3(), wmGizmo::matrix_offset, wmGizmo::matrix_space, MOUSEMOVE, mul_m4_m4_post(), mul_m4_m4m4(), mul_v2_v2(), MUL_V2_V3_M4_FINAL, mul_v3_fl(), wmEvent::mval, OPERATOR_RUNNING_MODAL, wmGizmo::ptr, RNA_enum_get(), RNA_float_get_array(), rotate_m4(), signf(), signum_i(), transform_pivot_set_m4(), wmEvent::type, wmGizmoProperty::type, unit_m4(), UNPACK2, WM_event_add_mousemove(), WM_gizmo_target_property_find(), WM_gizmo_target_property_float_get_array(), WM_gizmo_target_property_float_set_array(), zero_v2(), and zero_v3().
Referenced by GIZMO_GT_cage_2d().
|
static |
Definition at line 1275 of file cage2d_gizmo.cc.
References BLI_assert, wmGizmoPropertyType::idname, wmGizmo::matrix_offset, STREQ, wmGizmoProperty::type, WM_gizmo_target_property_array_length(), and WM_gizmo_target_property_float_get_array().
Referenced by GIZMO_GT_cage_2d().
|
static |
Definition at line 1003 of file cage2d_gizmo.cc.
References wmGizmo::flag, WM_GIZMO_DRAW_MODAL, and WM_GIZMO_DRAW_NO_SCALE.
Referenced by GIZMO_GT_cage_2d().
Definition at line 868 of file cage2d_gizmo.cc.
References BLI_rctf_isect_pt_v(), ED_GIZMO_CAGE2D_PART_ROTATE, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X_MIN_Y, ED_GIZMO_CAGE2D_PART_SCALE_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MIN_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_Y, ED_GIZMO_CAGE2D_PART_TRANSLATE, ED_GIZMO_CAGE_DRAW_FLAG_XFORM_CENTER_HANDLE, ED_GIZMO_CAGE_XFORM_FLAG_ROTATE, ED_GIZMO_CAGE_XFORM_FLAG_SCALE, ED_GIZMO_CAGE_XFORM_FLAG_SCALE_UNIFORM, ED_GIZMO_CAGE_XFORM_FLAG_TRANSLATE, gizmo_cage2d_transform_flag_get(), gizmo_calc_rect_view_margin(), GIZMO_MARGIN_OFFSET_SCALE, gizmo_window_project_2d(), wmGizmo::ptr, RNA_enum_get(), RNA_float_get_array(), rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.
Referenced by GIZMO_GT_cage_2d().
Definition at line 991 of file cage2d_gizmo.cc.
References ED_GIZMO_CAGE_XFORM_FLAG_SCALE_UNIFORM, wmGizmo::interaction_data, wmGizmo::ptr, and RNA_enum_get().
Referenced by gizmo_cage2d_draw_intern(), and gizmo_cage2d_test_select().
|
static |
Definition at line 77 of file cage2d_gizmo.cc.
References gizmo_calc_rect_view_scale(), and wmGizmo::scale_final.
Referenced by gizmo_cage2d_draw_intern(), and gizmo_cage2d_test_select().
|
static |
Definition at line 51 of file cage2d_gizmo.cc.
References len_v3(), wmGizmo::matrix_offset, mul_v2_v2(), mul_v3_mat3_m4v3(), safe_divide(), and WM_gizmo_calc_matrix_final_no_offset().
Referenced by gizmo_calc_rect_view_margin().
|
static |
Definition at line 1027 of file cage2d_gizmo.cc.
References ED_GIZMO_CAGE2D_PART_SCALE, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MIN_Y, and ED_GIZMO_CAGE2D_PART_SCALE_MIN_Y.
Referenced by gizmo_cage2d_modal().
|
static |
Definition at line 1315 of file cage2d_gizmo.cc.
References wmGizmoType::cursor_get, wmGizmoType::draw, wmGizmoType::draw_select, ED_GIZMO_CAGE2D_STYLE_BOX, ED_GIZMO_CAGE2D_STYLE_BOX_TRANSFORM, ED_GIZMO_CAGE2D_STYLE_CIRCLE, ED_GIZMO_CAGE_DRAW_FLAG_XFORM_CENTER_HANDLE, ED_GIZMO_CAGE_XFORM_FLAG_ROTATE, ED_GIZMO_CAGE_XFORM_FLAG_SCALE, ED_GIZMO_CAGE_XFORM_FLAG_SCALE_UNIFORM, ED_GIZMO_CAGE_XFORM_FLAG_TRANSLATE, wmGizmoType::exit, FLT_MAX, gizmo_cage2d_draw(), gizmo_cage2d_draw_select(), gizmo_cage2d_exit(), gizmo_cage2d_get_cursor(), gizmo_cage2d_invoke(), gizmo_cage2d_modal(), gizmo_cage2d_property_update(), gizmo_cage2d_setup(), gizmo_cage2d_test_select(), wmGizmoType::idname, wmGizmoType::invoke, wmGizmoType::modal, PROP_FLOAT, wmGizmoType::property_update, RNA_def_enum(), RNA_def_enum_flag(), RNA_def_float_vector(), wmGizmoType::setup, wmGizmoType::srna, wmGizmoType::struct_size, wmGizmoType::test_select, and WM_gizmotype_target_property_def().
Referenced by ED_gizmotypes_cage_2d().
Definition at line 1039 of file cage2d_gizmo.cc.
References ARRAY_SET_ITEMS, BLI_assert, ED_GIZMO_CAGE2D_PART_SCALE, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MAX_X_MIN_Y, ED_GIZMO_CAGE2D_PART_SCALE_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MAX_Y, ED_GIZMO_CAGE2D_PART_SCALE_MIN_X_MIN_Y, and ED_GIZMO_CAGE2D_PART_SCALE_MIN_Y.
Referenced by gizmo_cage2d_modal().
|
static |
Definition at line 447 of file cage2d_gizmo.cc.
References GPU_PRIM_LINES, GPU_PRIM_POINTS, GPU_PRIM_TRIS, immBegin(), immEnd(), immVertex2f(), and pos.
Referenced by cage2d_draw_rect_corner_handles(), and cage2d_draw_rect_edge_handles().