52 float(*matrix)[4] =
static_cast<float(*)[4]
>(value_p);
62 float dims[2] = {0.0f, 0.0f};
67 matrix[3][0] = (ob->
ima_ofs[0] * dims[0]) + (0.5f * dims[0]);
68 matrix[3][1] = (ob->
ima_ofs[1] * dims[1]) + (0.5f * dims[1]);
75 const float(*matrix)[4] =
static_cast<const float(*)[4]
>(value_p);
90 ob->
ima_ofs[0] = (matrix[3][0] - (0.5f * dims[0])) / dims[0];
91 ob->
ima_ofs[1] = (matrix[3][1] - (0.5f * dims[1])) / dims[1];
161 if (ob->
data !=
nullptr) {
168 if (image->aspx > image->aspy) {
169 size[1] *= image->aspy / image->aspx;
171 else if (image->aspx < image->aspy) {
172 size[0] *= image->aspx / image->aspy;
175 const float dims_max =
max_ff(size[0], size[1]);
176 igzgroup->
state.
dims[0] = size[0] / dims_max;
177 igzgroup->
state.
dims[1] = size[1] / dims_max;
187 params.range_get_fn =
nullptr;
188 params.user_data = igzgroup;
194 gzgt->
name =
"Area Light Widgets";
195 gzgt->
idname =
"VIEW3D_GGT_empty_image";
Scene * CTX_data_scene(const bContext *C)
RegionView3D * CTX_wm_region_view3d(const bContext *C)
View3D * CTX_wm_view3d(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
void BKE_image_get_size_fl(Image *image, ImageUser *iuser, float r_size[2])
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
Base * BKE_view_layer_active_base_get(ViewLayer *view_layer)
Object * BKE_view_layer_active_object_get(const ViewLayer *view_layer)
General operations, lookup, etc. for blender objects.
bool BKE_object_empty_image_frame_is_visible_in_view3d(const Object *ob, const RegionView3D *rv3d)
#define LISTBASE_FOREACH(type, var, list)
MINLINE float max_ff(float a, float b)
void unit_m4(float m[4][4])
void copy_m4_m4(float m1[4][4], const float m2[4][4])
MINLINE void copy_v2_fl(float r[2], float f)
void DEG_id_tag_update(ID *id, unsigned int flags)
Object is a sort of wrapper for general info.
#define BASE_SELECTABLE(v3d, base)
@ V3D_GIZMO_SHOW_EMPTY_IMAGE
@ ED_GIZMO_CAGE_XFORM_FLAG_SCALE
@ ED_GIZMO_CAGE_XFORM_FLAG_TRANSLATE
@ ED_GIZMO_CAGE_XFORM_FLAG_SCALE_UNIFORM
Read Guarded memory(de)allocation.
void UI_GetThemeColor3fv(int colorid, float col[3])
@ WM_GIZMOGROUPTYPE_DEPTH_3D
@ WM_GIZMOGROUPTYPE_PERSISTENT
draw_view in_light_buf[] float
void *(* MEM_mallocN)(size_t len, const char *str)
void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
void RNA_float_set_array(PointerRNA *ptr, const char *name, const float *values)
wmGizmoGroupFnSetupKeymap setup_keymap
wmGizmoGroupFnRefresh refresh
eWM_GizmoFlagGroupTypeFlag flag
const wmGizmoPropertyType * type
struct wmGizmoProperty::@1373 custom_func
static void WIDGETGROUP_empty_image_refresh(const bContext *C, wmGizmoGroup *gzgroup)
static void gizmo_empty_image_prop_matrix_set(const wmGizmo *gz, wmGizmoProperty *gz_prop, const void *value_p)
void VIEW3D_GGT_empty_image(wmGizmoGroupType *gzgt)
static void gizmo_empty_image_prop_matrix_get(const wmGizmo *gz, wmGizmoProperty *gz_prop, void *value_p)
static void WIDGETGROUP_empty_image_setup(const bContext *, wmGizmoGroup *gzgroup)
static bool WIDGETGROUP_empty_image_poll(const bContext *C, wmGizmoGroupType *)
void WM_main_add_notifier(uint type, void *reference)
wmGizmo * WM_gizmo_new(const char *idname, wmGizmoGroup *gzgroup, PointerRNA *properties)
void WM_gizmo_set_flag(wmGizmo *gz, const int flag, const bool enable)
wmKeyMap * WM_gizmogroup_setup_keymap_generic_maybe_drag(const wmGizmoGroupType *, wmKeyConfig *kc)
void WM_gizmo_target_property_def_func(wmGizmo *gz, const char *idname, const wmGizmoPropertyFnParams *params)