Blender  V3.3
Classes | Macros | Typedefs | Functions
cage2d_gizmo.c File Reference
#include "MEM_guardedalloc.h"
#include "BLI_dial_2d.h"
#include "BLI_math.h"
#include "BLI_rect.h"
#include "BKE_context.h"
#include "GPU_immediate.h"
#include "GPU_immediate_util.h"
#include "GPU_matrix.h"
#include "GPU_select.h"
#include "GPU_shader.h"
#include "GPU_state.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "WM_api.h"
#include "WM_types.h"
#include "ED_gizmo_library.h"
#include "ED_screen.h"
#include "ED_view3d.h"
#include "../gizmo_library_intern.h"

Go to the source code of this file.

Classes

struct  RectTransformInteraction
 

Macros

#define MUL_V2_V3_M4_FINAL(test_co, mouse_co)
 

Typedefs

typedef struct RectTransformInteraction RectTransformInteraction
 

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 *UNUSED(C), wmGizmo *gz, int select_id)
 
static void gizmo_cage2d_draw (const bContext *UNUSED(C), 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_rect_pivot_from_scale_part (int part, float r_pt[2], bool r_constrain_axis[2])
 
static int gizmo_cage2d_modal (bContext *C, wmGizmo *gz, const wmEvent *event, eWM_GizmoFlagTweak UNUSED(tweak_flag))
 
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_circle_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_handles (const rctf *r, const float margin[2], const float color[3], const int transform_flag, bool solid)
 
Cage Gizmo API
static void GIZMO_GT_cage_2d (wmGizmoType *gzt)
 
void ED_gizmotypes_cage_2d (void)
 

Cage Gizmo

Rectangular gizmo acting as a 'cage' around its content. Interacting scales or translates the gizmo.

2D Gizmo

#define GIZMO_MARGIN_OFFSET_SCALE   1.5f
 
static bool gizmo_calc_rect_view_scale (const wmGizmo *gz, const float dims[2], float scale[2])
 
static bool gizmo_calc_rect_view_margin (const wmGizmo *gz, const float dims[2], float margin[2])
 

Macro Definition Documentation

◆ GIZMO_MARGIN_OFFSET_SCALE

#define GIZMO_MARGIN_OFFSET_SCALE   1.5f

Definition at line 43 of file cage2d_gizmo.c.

◆ MUL_V2_V3_M4_FINAL

#define MUL_V2_V3_M4_FINAL (   test_co,
  mouse_co 
)
Value:
test_co, data->orig_matrix_final_no_offset, ((const float[3]){UNPACK2(mouse_co), 0.0}))
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
Definition: math_matrix.c:739

Typedef Documentation

◆ RectTransformInteraction

Function Documentation

◆ cage2d_draw_box_corners()

static void cage2d_draw_box_corners ( const rctf r,
const float  margin[2],
const float  color[3],
const float  line_width 
)
static

◆ cage2d_draw_box_interaction()

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 
)
static

◆ cage2d_draw_circle_handles()

static void cage2d_draw_circle_handles ( const rctf r,
const float  margin[2],
const float  color[3],
const int  transform_flag,
bool  solid 
)
static

◆ cage2d_draw_circle_wire()

static void cage2d_draw_circle_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

◆ ED_gizmotypes_cage_2d()

void ED_gizmotypes_cage_2d ( void  )

Definition at line 1230 of file cage2d_gizmo.c.

References GIZMO_GT_cage_2d(), and WM_gizmotype_append().

Referenced by ED_spacetypes_init().

◆ gizmo_cage2d_draw()

static void gizmo_cage2d_draw ( const bContext UNUSEDC,
wmGizmo gz 
)
static

Definition at line 723 of file cage2d_gizmo.c.

References gizmo_cage2d_draw_intern(), wmGizmo::state, and WM_GIZMO_STATE_HIGHLIGHT.

Referenced by GIZMO_GT_cage_2d().

◆ gizmo_cage2d_draw_intern()

static void gizmo_cage2d_draw_intern ( wmGizmo gz,
const bool  select,
const bool  highlight,
const int  select_id 
)
static

◆ gizmo_cage2d_draw_select()

static void gizmo_cage2d_draw_select ( const bContext UNUSEDC,
wmGizmo gz,
int  select_id 
)
static

For when we want to draw 2d cage in 3d views.

Definition at line 718 of file cage2d_gizmo.c.

References gizmo_cage2d_draw_intern().

Referenced by GIZMO_GT_cage_2d().

◆ gizmo_cage2d_exit()

static void gizmo_cage2d_exit ( bContext C,
wmGizmo gz,
const bool  cancel 
)
static

◆ gizmo_cage2d_get_cursor()

static int gizmo_cage2d_get_cursor ( wmGizmo gz)
static

◆ gizmo_cage2d_invoke()

static int gizmo_cage2d_invoke ( bContext C,
wmGizmo gz,
const wmEvent event 
)
static

◆ gizmo_cage2d_modal()

static int gizmo_cage2d_modal ( bContext C,
wmGizmo gz,
const wmEvent event,
eWM_GizmoFlagTweak   UNUSEDtweak_flag 
)
static

◆ gizmo_cage2d_property_update()

static void gizmo_cage2d_property_update ( wmGizmo gz,
wmGizmoProperty gz_prop 
)
static

◆ gizmo_cage2d_setup()

static void gizmo_cage2d_setup ( wmGizmo gz)
static

Definition at line 887 of file cage2d_gizmo.c.

References wmGizmo::flag, WM_GIZMO_DRAW_MODAL, and WM_GIZMO_DRAW_NO_SCALE.

Referenced by GIZMO_GT_cage_2d().

◆ gizmo_cage2d_test_select()

static int gizmo_cage2d_test_select ( bContext C,
wmGizmo gz,
const int  mval[2] 
)
static

◆ gizmo_calc_rect_view_margin()

static bool gizmo_calc_rect_view_margin ( const wmGizmo gz,
const float  dims[2],
float  margin[2] 
)
static

◆ gizmo_calc_rect_view_scale()

static bool gizmo_calc_rect_view_scale ( const wmGizmo gz,
const float  dims[2],
float  scale[2] 
)
static

◆ GIZMO_GT_cage_2d()

static void GIZMO_GT_cage_2d ( wmGizmoType gzt)
static

◆ gizmo_rect_pivot_from_scale_part()

static void gizmo_rect_pivot_from_scale_part ( int  part,
float  r_pt[2],
bool  r_constrain_axis[2] 
)
static

◆ imm_draw_point_aspect_2d()

static void imm_draw_point_aspect_2d ( uint  pos,
float  x,
float  y,
float  rad_x,
float  rad_y,
bool  solid 
)
static

Definition at line 441 of file cage2d_gizmo.c.

References GPU_PRIM_LINES, GPU_PRIM_TRIS, immBegin(), immEnd(), immVertex2f(), pos, x, and y.

Referenced by cage2d_draw_circle_handles().