Revert to master - those changes are globally valid, but remain incomplete,
[blender.git] / source / blender / blenkernel / BKE_camera.h
index 72e22dc15832c4ecc67ea9ac93724d98f9542692..aacb7a4066bb742037eeae33eaf6496434665e3e 100644 (file)
@@ -25,8 +25,8 @@
  * ***** END GPL LICENSE BLOCK *****
  */
 
-#ifndef BKE_CAMERA_H
-#define BKE_CAMERA_H
+#ifndef __BKE_CAMERA_H__
+#define __BKE_CAMERA_H__
 
 /** \file BKE_camera.h
  *  \ingroup bke
@@ -39,27 +39,29 @@ extern "C" {
 #include "DNA_vec_types.h"
 
 struct Camera;
+struct Main;
 struct Object;
 struct RegionView3D;
 struct RenderData;
 struct Scene;
 struct rctf;
 struct View3D;
+struct GPUFXSettings;
 
 /* Camera Datablock */
 
-void *add_camera(const char *name);
-struct Camera *copy_camera(struct Camera *cam);
-void make_local_camera(struct Camera *cam);
-void free_camera(struct Camera *ca);
+void *BKE_camera_add(struct Main *bmain, const char *name);
+struct Camera *BKE_camera_copy(struct Camera *cam);
+void BKE_camera_make_local(struct Camera *cam);
+void BKE_camera_free(struct Camera *ca);
 
 /* Camera Usage */
 
-float object_camera_dof_distance(struct Object *ob);
-void object_camera_mode(struct RenderData *rd, struct Object *ob);
+float BKE_camera_object_dof_distance(struct Object *ob);
+void BKE_camera_object_mode(struct RenderData *rd, struct Object *ob);
 
-int camera_sensor_fit(int sensor_fit, float sizex, float sizey);
-float camera_sensor_size(int sensor_fit, float sensor_x, float sensor_y);
+int BKE_camera_sensor_fit(int sensor_fit, float sizex, float sizey);
+float BKE_camera_sensor_size(int sensor_fit, float sensor_x, float sensor_y);
 
 /* Camera Parameters:
  *
@@ -68,7 +70,7 @@ float camera_sensor_size(int sensor_fit, float sensor_x, float sensor_y);
 
 typedef struct CameraParams {
        /* lens */
-       int is_ortho;
+       bool is_ortho;
        float lens;
        float ortho_scale;
        float zoom;
@@ -102,23 +104,45 @@ typedef struct CameraParams {
        float winmat[4][4];
 } CameraParams;
 
-void camera_params_init(CameraParams *params);
-void camera_params_from_object(CameraParams *params, struct Object *camera);
-void camera_params_from_view3d(CameraParams *params, struct View3D *v3d, struct RegionView3D *rv3d);
+/* values for CameraParams.zoom, need to be taken into account for some operations */
+#define CAMERA_PARAM_ZOOM_INIT_CAMOB 1.0f
+#define CAMERA_PARAM_ZOOM_INIT_PERSP 2.0f
 
-void camera_params_compute_viewplane(CameraParams *params, int winx, int winy, float aspx, float aspy);
-void camera_params_compute_matrix(CameraParams *params);
+void BKE_camera_params_init(CameraParams *params);
+void BKE_camera_params_from_object(CameraParams *params, const struct Object *camera);
+void BKE_camera_params_from_view3d(CameraParams *params, const struct View3D *v3d, const struct RegionView3D *rv3d);
 
-/* Camera View Frame */
+void BKE_camera_params_compute_viewplane(CameraParams *params, int winx, int winy, float aspx, float aspy);
+void BKE_camera_params_compute_matrix(CameraParams *params);
 
-void camera_view_frame_ex(struct Scene *scene, struct Camera *camera, float drawsize, const short do_clip, const float scale[3],
-                          float r_asp[2], float r_shift[2], float *r_drawsize, float r_vec[4][3]);
+/* Camera View Frame */
 
-void camera_view_frame(struct Scene *scene, struct Camera *camera, float r_vec[4][3]);
+void BKE_camera_view_frame_ex(
+        const struct Scene *scene, const struct Camera *camera,
+        const float drawsize, const bool do_clip, const float scale[3],
+        float r_asp[2], float r_shift[2], float *r_drawsize, float r_vec[4][3]);
+void BKE_camera_view_frame(
+        const struct Scene *scene, const struct Camera *camera,
+        float r_vec[4][3]);
 
-int camera_view_frame_fit_to_scene(
+bool BKE_camera_view_frame_fit_to_scene(
         struct Scene *scene, struct View3D *v3d, struct Object *camera_ob,
-        float r_co[3]);
+        float r_co[3], float *r_scale);
+bool BKE_camera_view_frame_fit_to_coords(
+        const struct Scene *scene,
+        const float (*cos)[3], int num_cos,
+        const struct Object *camera_ob,
+        float r_co[3], float *r_scale);
+
+void BKE_camera_to_gpu_dof(struct Object *camera, struct GPUFXSettings *r_fx_settings);
+
+/* Camera multi-view API */
+
+struct Object *BKE_camera_multiview_render(struct Scene *scene, struct Object *camera, const char *viewname);
+void           BKE_camera_multiview_view_matrix(struct RenderData *rd, struct Object *camera, const bool is_left, float r_viewmat[4][4]);
+void           BKE_camera_multiview_model_matrix(struct RenderData *rd, struct Object *camera, const char *viewname, float r_modelmat[4][4]);
+float          BKE_camera_multiview_shift_x(struct RenderData *rd, struct Object *camera, const char *viewname);
+void           BKE_camera_multiview_params(struct RenderData *rd, struct CameraParams *params, struct Object *camera, const char *viewname);
 
 #ifdef __cplusplus
 }