From f3e0e39df5b8a193d7fb4d51f6c8b667464fad51 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 8 Mar 2024 17:13:10 +1100 Subject: [PATCH] Cleanup: use const pointers where camera data isn't modified --- source/blender/blenkernel/BKE_camera.h | 4 ++-- source/blender/blenkernel/intern/camera.cc | 15 +++++++-------- source/blender/blenlib/BLI_uvproject.h | 2 +- source/blender/blenlib/intern/uvproject.cc | 4 ++-- .../draw/engines/eevee/eevee_depth_of_field.cc | 2 +- .../draw/engines/image/image_shader_params.hh | 2 +- .../blender/draw/engines/overlay/overlay_extra.cc | 8 ++++---- .../blender/draw/engines/overlay/overlay_image.cc | 2 +- .../engines/workbench/workbench_effect_dof.cc | 2 +- .../blender/editors/space_view3d/view3d_draw.cc | 3 +-- .../editors/space_view3d/view3d_gizmo_camera.cc | 2 +- .../blender/editors/uvedit/uvedit_unwrap_ops.cc | 4 ++-- .../intern/lineart/lineart_cpu.cc | 2 +- .../io/alembic/exporter/abc_writer_camera.cc | 4 ++-- source/blender/io/collada/collada_utils.h | 2 +- source/blender/io/usd/intern/usd_writer_camera.cc | 4 ++-- source/blender/makesrna/intern/rna_camera.cc | 14 +++++++------- source/blender/modifiers/intern/MOD_uvproject.cc | 3 +-- 18 files changed, 38 insertions(+), 41 deletions(-) diff --git a/source/blender/blenkernel/BKE_camera.h b/source/blender/blenkernel/BKE_camera.h index 4cb6a7a6f21..f0d31824266 100644 --- a/source/blender/blenkernel/BKE_camera.h +++ b/source/blender/blenkernel/BKE_camera.h @@ -173,8 +173,8 @@ struct CameraBGImage *BKE_camera_background_image_new(struct Camera *cam); * \param copy_flag: The usual ID copying flags, see `LIB_ID_CREATE_`/`LIB_ID_COPY_` enums in * `BKE_lib_id.hh`. */ -struct CameraBGImage *BKE_camera_background_image_copy(struct CameraBGImage *bgpic_src, - const int copy_flag); +struct CameraBGImage *BKE_camera_background_image_copy(const struct CameraBGImage *bgpic_src, + int copy_flag); void BKE_camera_background_image_remove(struct Camera *cam, struct CameraBGImage *bgpic); void BKE_camera_background_image_clear(struct Camera *cam); diff --git a/source/blender/blenkernel/intern/camera.cc b/source/blender/blenkernel/intern/camera.cc index 4b01492bb00..877397f2bfd 100644 --- a/source/blender/blenkernel/intern/camera.cc +++ b/source/blender/blenkernel/intern/camera.cc @@ -278,7 +278,7 @@ void *BKE_camera_add(Main *bmain, const char *name) float BKE_camera_object_dof_distance(const Object *ob) { - Camera *cam = (Camera *)ob->data; + const Camera *cam = (const Camera *)ob->data; if (ob->type != OB_CAMERA) { return 0.0f; } @@ -355,7 +355,7 @@ void BKE_camera_params_from_object(CameraParams *params, const Object *cam_ob) if (cam_ob->type == OB_CAMERA) { /* camera object */ - Camera *cam = static_cast(cam_ob->data); + const Camera *cam = static_cast(cam_ob->data); if (cam->type == CAM_ORTHO) { params->is_ortho = true; @@ -899,7 +899,7 @@ static void camera_stereo3d_model_matrix(const Object *camera, const bool is_left, float r_modelmat[4][4]) { - Camera *data = (Camera *)camera->data; + const Camera *data = (const Camera *)camera->data; float interocular_distance, convergence_distance; short convergence_mode, pivot; float sizemat[4][4]; @@ -1060,7 +1060,6 @@ void BKE_camera_multiview_window_matrix(const RenderData *rd, bool BKE_camera_multiview_spherical_stereo(const RenderData *rd, const Object *camera) { - Camera *cam; const bool is_multiview = (rd && rd->scemode & R_MULTIVIEW) != 0; if (!is_multiview) { @@ -1071,7 +1070,7 @@ bool BKE_camera_multiview_spherical_stereo(const RenderData *rd, const Object *c return false; } - cam = static_cast(camera->data); + const Camera *cam = static_cast(camera->data); if ((rd->views_format == SCE_VIEWS_FORMAT_STEREO_3D) && ELEM(cam->type, CAM_PANO, CAM_PERSP) && ((cam->stereo.flag & CAM_S3D_SPHERICAL) != 0)) @@ -1132,7 +1131,7 @@ Object *BKE_camera_multiview_render(const Scene *scene, Object *camera, const ch static float camera_stereo3d_shift_x(const Object *camera, const char *viewname) { - Camera *data = static_cast(camera->data); + const Camera *data = static_cast(camera->data); float shift = data->shiftx; float interocular_distance, convergence_distance; short convergence_mode, pivot; @@ -1174,7 +1173,7 @@ float BKE_camera_multiview_shift_x(const RenderData *rd, const char *viewname) { const bool is_multiview = (rd && rd->scemode & R_MULTIVIEW) != 0; - Camera *data = static_cast(camera->data); + const Camera *data = static_cast(camera->data); BLI_assert(camera->type == OB_CAMERA); @@ -1222,7 +1221,7 @@ CameraBGImage *BKE_camera_background_image_new(Camera *cam) return bgpic; } -CameraBGImage *BKE_camera_background_image_copy(CameraBGImage *bgpic_src, const int flag) +CameraBGImage *BKE_camera_background_image_copy(const CameraBGImage *bgpic_src, const int flag) { CameraBGImage *bgpic_dst = static_cast(MEM_dupallocN(bgpic_src)); diff --git a/source/blender/blenlib/BLI_uvproject.h b/source/blender/blenlib/BLI_uvproject.h index 06c34bd09a7..3aae1e5a24d 100644 --- a/source/blender/blenlib/BLI_uvproject.h +++ b/source/blender/blenlib/BLI_uvproject.h @@ -20,7 +20,7 @@ struct ProjCameraInfo; * \param rotmat: can be `obedit->object_to_world().ptr()` when uv project is used. * \param winx, winy: can be from `scene->r.xsch / ysch`. */ -struct ProjCameraInfo *BLI_uvproject_camera_info(struct Object *ob, +struct ProjCameraInfo *BLI_uvproject_camera_info(const struct Object *ob, const float rotmat[4][4], float winx, float winy); diff --git a/source/blender/blenlib/intern/uvproject.cc b/source/blender/blenlib/intern/uvproject.cc index 5ef767f4648..c335cd17981 100644 --- a/source/blender/blenlib/intern/uvproject.cc +++ b/source/blender/blenlib/intern/uvproject.cc @@ -121,13 +121,13 @@ void BLI_uvproject_from_view(float target[2], target[1] = (y + target[1]) / winy; } -ProjCameraInfo *BLI_uvproject_camera_info(Object *ob, +ProjCameraInfo *BLI_uvproject_camera_info(const Object *ob, const float rotmat[4][4], float winx, float winy) { ProjCameraInfo uci; - Camera *camera = static_cast(ob->data); + const Camera *camera = static_cast(ob->data); uci.do_pano = (camera->type == CAM_PANO); uci.do_persp = (camera->type == CAM_PERSP); diff --git a/source/blender/draw/engines/eevee/eevee_depth_of_field.cc b/source/blender/draw/engines/eevee/eevee_depth_of_field.cc index e9cfcf77817..fe728d8a701 100644 --- a/source/blender/draw/engines/eevee/eevee_depth_of_field.cc +++ b/source/blender/draw/engines/eevee/eevee_depth_of_field.cc @@ -188,7 +188,7 @@ int EEVEE_depth_of_field_init(EEVEE_ViewLayerData * /*sldata*/, EEVEE_Data *veda const DRWContextState *draw_ctx = DRW_context_state_get(); const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph); - Camera *cam = static_cast( + const Camera *cam = static_cast( (camera != nullptr && camera->type == OB_CAMERA) ? camera->data : nullptr); if (cam && (cam->dof.flag & CAM_DOF_ENABLED)) { diff --git a/source/blender/draw/engines/image/image_shader_params.hh b/source/blender/draw/engines/image/image_shader_params.hh index 7cf04acb9f8..5b5cc23b933 100644 --- a/source/blender/draw/engines/image/image_shader_params.hh +++ b/source/blender/draw/engines/image/image_shader_params.hh @@ -36,7 +36,7 @@ struct ShaderParameters { use_premul_alpha = BKE_image_has_gpu_texture_premultiplied_alpha(image, image_buffer); if (scene->camera && scene->camera->type == OB_CAMERA) { - Camera *camera = static_cast(scene->camera->data); + const Camera *camera = static_cast(scene->camera->data); copy_v2_fl2(far_near, camera->clip_end, camera->clip_start); } space->get_shader_parameters(*this, image_buffer); diff --git a/source/blender/draw/engines/overlay/overlay_extra.cc b/source/blender/draw/engines/overlay/overlay_extra.cc index 09fe549d8a1..d2d4bee8764 100644 --- a/source/blender/draw/engines/overlay/overlay_extra.cc +++ b/source/blender/draw/engines/overlay/overlay_extra.cc @@ -1008,7 +1008,7 @@ static float camera_offaxis_shiftx_get(Scene *scene, const OVERLAY_CameraInstanceData *instdata, bool right_eye) { - Camera *cam = static_cast(ob->data); + const Camera *cam = static_cast(ob->data); if (cam->stereo.convergence_mode == CAM_S3D_OFFAXIS) { const char *viewnames[2] = {STEREO_LEFT_NAME, STEREO_RIGHT_NAME}; const float shiftx = BKE_camera_multiview_shift_x(&scene->r, ob, viewnames[right_eye]); @@ -1030,7 +1030,7 @@ static void camera_stereoscopy_extra(OVERLAY_ExtraCallBuffers *cb, const OVERLAY_CameraInstanceData *instdata) { OVERLAY_CameraInstanceData stereodata = *instdata; - Camera *cam = static_cast(ob->data); + const Camera *cam = static_cast(ob->data); const bool is_select = DRW_state_is_select(); const char *viewnames[2] = {STEREO_LEFT_NAME, STEREO_RIGHT_NAME}; @@ -1134,8 +1134,8 @@ void OVERLAY_camera_cache_populate(OVERLAY_Data *vedata, Object *ob) Scene *scene = draw_ctx->scene; RegionView3D *rv3d = draw_ctx->rv3d; - Camera *cam = static_cast(ob->data); - Object *camera_object = DEG_get_evaluated_object(draw_ctx->depsgraph, v3d->camera); + const Camera *cam = static_cast(ob->data); + const Object *camera_object = DEG_get_evaluated_object(draw_ctx->depsgraph, v3d->camera); const bool is_select = DRW_state_is_select(); const bool is_active = (ob == camera_object); const bool look_through = (is_active && (rv3d->persp == RV3D_CAMOB)); diff --git a/source/blender/draw/engines/overlay/overlay_image.cc b/source/blender/draw/engines/overlay/overlay_image.cc index bc00980ebf7..f5c7a4c964b 100644 --- a/source/blender/draw/engines/overlay/overlay_image.cc +++ b/source/blender/draw/engines/overlay/overlay_image.cc @@ -295,7 +295,7 @@ void OVERLAY_image_camera_cache_populate(OVERLAY_Data *vedata, Object *ob) const DRWContextState *draw_ctx = DRW_context_state_get(); const View3D *v3d = draw_ctx->v3d; const Scene *scene = draw_ctx->scene; - Camera *cam = static_cast(ob->data); + const Camera *cam = static_cast(ob->data); const bool show_frame = BKE_object_empty_image_frame_is_visible_in_view3d(ob, draw_ctx->rv3d); diff --git a/source/blender/draw/engines/workbench/workbench_effect_dof.cc b/source/blender/draw/engines/workbench/workbench_effect_dof.cc index f1c51fdd915..4de4bfff9e2 100644 --- a/source/blender/draw/engines/workbench/workbench_effect_dof.cc +++ b/source/blender/draw/engines/workbench/workbench_effect_dof.cc @@ -115,7 +115,7 @@ void DofPass::init(const SceneState &scene_state) coc_halfres_tx_.ensure_mip_views(); coc_halfres_tx_.filter_mode(true); - Camera *camera = scene_state.camera; + const Camera *camera = scene_state.camera; /* Parameters */ float fstop = camera->dof.aperture_fstop; diff --git a/source/blender/editors/space_view3d/view3d_draw.cc b/source/blender/editors/space_view3d/view3d_draw.cc index 5ff5a14de6b..443325ebcfe 100644 --- a/source/blender/editors/space_view3d/view3d_draw.cc +++ b/source/blender/editors/space_view3d/view3d_draw.cc @@ -1219,8 +1219,7 @@ static const char *view3d_get_name(View3D *v3d, RegionView3D *rv3d) default: if (rv3d->persp == RV3D_CAMOB) { if ((v3d->camera) && (v3d->camera->type == OB_CAMERA)) { - Camera *cam; - cam = static_cast(v3d->camera->data); + const Camera *cam = static_cast(v3d->camera->data); if (cam->type == CAM_PERSP) { name = IFACE_("Camera Perspective"); } diff --git a/source/blender/editors/space_view3d/view3d_gizmo_camera.cc b/source/blender/editors/space_view3d/view3d_gizmo_camera.cc index 1375b5eab0c..a341d33e31d 100644 --- a/source/blender/editors/space_view3d/view3d_gizmo_camera.cc +++ b/source/blender/editors/space_view3d/view3d_gizmo_camera.cc @@ -63,7 +63,7 @@ static bool WIDGETGROUP_camera_poll(const bContext *C, wmGizmoGroupType * /*gzgt if (base && BASE_SELECTABLE(v3d, base)) { Object *ob = base->object; if (ob->type == OB_CAMERA) { - Camera *camera = static_cast(ob->data); + const Camera *camera = static_cast(ob->data); /* TODO: support overrides. */ if (BKE_id_is_editable(CTX_data_main(C), &camera->id)) { return true; diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.cc b/source/blender/editors/uvedit/uvedit_unwrap_ops.cc index ab4f26bd65a..ecc39bb4fdc 100644 --- a/source/blender/editors/uvedit/uvedit_unwrap_ops.cc +++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.cc @@ -3011,7 +3011,7 @@ static int uv_from_view_invoke(bContext *C, wmOperator *op, const wmEvent * /*ev { View3D *v3d = CTX_wm_view3d(C); RegionView3D *rv3d = CTX_wm_region_view3d(C); - Camera *camera = ED_view3d_camera_data_get(v3d, rv3d); + const Camera *camera = ED_view3d_camera_data_get(v3d, rv3d); PropertyRNA *prop; prop = RNA_struct_find_property(op->ptr, "camera_bounds"); @@ -3033,7 +3033,7 @@ static int uv_from_view_exec(bContext *C, wmOperator *op) ARegion *region = CTX_wm_region(C); View3D *v3d = CTX_wm_view3d(C); RegionView3D *rv3d = CTX_wm_region_view3d(C); - Camera *camera = ED_view3d_camera_data_get(v3d, rv3d); + const Camera *camera = ED_view3d_camera_data_get(v3d, rv3d); BMFace *efa; BMLoop *l; BMIter iter, liter; diff --git a/source/blender/gpencil_modifiers_legacy/intern/lineart/lineart_cpu.cc b/source/blender/gpencil_modifiers_legacy/intern/lineart/lineart_cpu.cc index 59d750b23fe..88532419f54 100644 --- a/source/blender/gpencil_modifiers_legacy/intern/lineart/lineart_cpu.cc +++ b/source/blender/gpencil_modifiers_legacy/intern/lineart/lineart_cpu.cc @@ -3615,7 +3615,7 @@ static LineartData *lineart_create_render_buffer_v3(Scene *scene, if (!scene || !camera || !lc) { return nullptr; } - Camera *c = static_cast(camera->data); + const Camera *c = static_cast(camera->data); double clipping_offset = 0; if (lmd->calculation_flags & MOD_LINEART_ALLOW_CLIPPING_BOUNDARIES) { diff --git a/source/blender/io/alembic/exporter/abc_writer_camera.cc b/source/blender/io/alembic/exporter/abc_writer_camera.cc index 0040ed22d28..441c1cde65b 100644 --- a/source/blender/io/alembic/exporter/abc_writer_camera.cc +++ b/source/blender/io/alembic/exporter/abc_writer_camera.cc @@ -30,7 +30,7 @@ ABCCameraWriter::ABCCameraWriter(const ABCWriterConstructorArgs &args) : ABCAbst bool ABCCameraWriter::is_supported(const HierarchyContext *context) const { - Camera *camera = static_cast(context->object->data); + const Camera *camera = static_cast(context->object->data); return camera->type == CAM_PERSP; } @@ -69,7 +69,7 @@ Alembic::Abc::OCompoundProperty ABCCameraWriter::abc_prop_for_custom_props() void ABCCameraWriter::do_write(HierarchyContext &context) { - Camera *cam = static_cast(context.object->data); + const Camera *cam = static_cast(context.object->data); abc_stereo_distance_.set(cam->stereo.convergence_distance); abc_eye_separation_.set(cam->stereo.interocular_distance); diff --git a/source/blender/io/collada/collada_utils.h b/source/blender/io/collada/collada_utils.h index 88fd28908d3..61932daf827 100644 --- a/source/blender/io/collada/collada_utils.h +++ b/source/blender/io/collada/collada_utils.h @@ -95,7 +95,7 @@ inline bAction *bc_getSceneCameraAction(Object *ob) return NULL; } - Camera *camera = (Camera *)ob->data; + const Camera *camera = (const Camera *)ob->data; return (camera->adt && camera->adt->action) ? camera->adt->action : NULL; } diff --git a/source/blender/io/usd/intern/usd_writer_camera.cc b/source/blender/io/usd/intern/usd_writer_camera.cc index dd39aae93cc..d6d4692b44f 100644 --- a/source/blender/io/usd/intern/usd_writer_camera.cc +++ b/source/blender/io/usd/intern/usd_writer_camera.cc @@ -21,7 +21,7 @@ USDCameraWriter::USDCameraWriter(const USDExporterContext &ctx) : USDAbstractWri bool USDCameraWriter::is_supported(const HierarchyContext *context) const { - Camera *camera = static_cast(context->object->data); + const Camera *camera = static_cast(context->object->data); return camera->type == CAM_PERSP; } @@ -61,7 +61,7 @@ void USDCameraWriter::do_write(HierarchyContext &context) pxr::UsdGeomCamera usd_camera = pxr::UsdGeomCamera::Define(usd_export_context_.stage, usd_export_context_.usd_path); - Camera *camera = static_cast(context.object->data); + const Camera *camera = static_cast(context.object->data); Scene *scene = DEG_get_evaluated_scene(usd_export_context_.depsgraph); usd_camera.CreateProjectionAttr().Set(pxr::UsdGeomTokens->perspective); diff --git a/source/blender/makesrna/intern/rna_camera.cc b/source/blender/makesrna/intern/rna_camera.cc index dd8d1c0dc89..90a1181d9b8 100644 --- a/source/blender/makesrna/intern/rna_camera.cc +++ b/source/blender/makesrna/intern/rna_camera.cc @@ -36,7 +36,7 @@ static float rna_Camera_angle_get(PointerRNA *ptr) { - Camera *cam = (Camera *)ptr->owner_id; + const Camera *cam = (const Camera *)ptr->owner_id; float sensor = BKE_camera_sensor_size(cam->sensor_fit, cam->sensor_x, cam->sensor_y); return focallength_to_fov(cam->lens, sensor); } @@ -50,7 +50,7 @@ static void rna_Camera_angle_set(PointerRNA *ptr, float value) static float rna_Camera_angle_x_get(PointerRNA *ptr) { - Camera *cam = (Camera *)ptr->owner_id; + const Camera *cam = (const Camera *)ptr->owner_id; return focallength_to_fov(cam->lens, cam->sensor_x); } @@ -62,7 +62,7 @@ static void rna_Camera_angle_x_set(PointerRNA *ptr, float value) static float rna_Camera_angle_y_get(PointerRNA *ptr) { - Camera *cam = (Camera *)ptr->owner_id; + const Camera *cam = (const Camera *)ptr->owner_id; return focallength_to_fov(cam->lens, cam->sensor_y); } @@ -120,7 +120,7 @@ static void rna_Camera_background_images_clear(Camera *cam) static std::optional rna_Camera_background_image_path(const PointerRNA *ptr) { const CameraBGImage *bgpic = static_cast(ptr->data); - Camera *camera = (Camera *)ptr->owner_id; + const Camera *camera = (const Camera *)ptr->owner_id; const int bgpic_index = BLI_findindex(&camera->bg_images, bgpic); @@ -135,7 +135,7 @@ std::optional rna_CameraBackgroundImage_image_or_movieclip_user_pat const PointerRNA *ptr) { const char *user = static_cast(ptr->data); - Camera *camera = (Camera *)ptr->owner_id; + const Camera *camera = (const Camera *)ptr->owner_id; int bgpic_index = BLI_findindex(&camera->bg_images, user - offsetof(CameraBGImage, iuser)); if (bgpic_index >= 0) { @@ -162,7 +162,7 @@ static bool rna_Camera_background_images_override_apply( "Unsupported RNA override operation on background images collection"); Camera *cam_dst = (Camera *)ptr_dst->owner_id; - Camera *cam_src = (Camera *)ptr_src->owner_id; + const Camera *cam_src = (const Camera *)ptr_src->owner_id; /* Remember that insertion operations are defined and stored in correct order, which means that * even if we insert several items in a row, we always insert first one, then second one, etc. @@ -171,7 +171,7 @@ static bool rna_Camera_background_images_override_apply( BLI_findlink(&cam_dst->bg_images, opop->subitem_reference_index)); /* If `bgpic_anchor` is nullptr, `bgpic_src` will be inserted in first position. */ - CameraBGImage *bgpic_src = static_cast( + const CameraBGImage *bgpic_src = static_cast( BLI_findlink(&cam_src->bg_images, opop->subitem_local_index)); if (bgpic_src == nullptr) { diff --git a/source/blender/modifiers/intern/MOD_uvproject.cc b/source/blender/modifiers/intern/MOD_uvproject.cc index 5d7363d5735..cfcfd7c3b71 100644 --- a/source/blender/modifiers/intern/MOD_uvproject.cc +++ b/source/blender/modifiers/intern/MOD_uvproject.cc @@ -139,14 +139,13 @@ static Mesh *uvprojectModifier_do(UVProjectModifierData *umd, for (int i = 0; i < projectors_num; i++) { float tmpmat[4][4]; float offsetmat[4][4]; - Camera *cam = nullptr; /* calculate projection matrix */ invert_m4_m4(projectors[i].projmat, projectors[i].ob->object_to_world().ptr()); projectors[i].uci = nullptr; if (projectors[i].ob->type == OB_CAMERA) { - cam = (Camera *)projectors[i].ob->data; + const Camera *cam = (const Camera *)projectors[i].ob->data; if (cam->type == CAM_PANO) { projectors[i].uci = BLI_uvproject_camera_info(projectors[i].ob, nullptr, aspx, aspy); BLI_uvproject_camera_info_scale(