21def800e4a53e216f92bf548434c65c53fe51c3
[blender-staging.git] / source / blender / makesdna / DNA_view3d_types.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19
20 /** \file
21  * \ingroup DNA
22  */
23
24 #ifndef __DNA_VIEW3D_TYPES_H__
25 #define __DNA_VIEW3D_TYPES_H__
26
27 struct BoundBox;
28 struct Object;
29 struct RenderEngine;
30 struct SmoothView3DStore;
31 struct SpaceLink;
32 struct ViewDepths;
33 struct bGPdata;
34 struct wmTimer;
35
36 #include "DNA_defs.h"
37 #include "DNA_image_types.h"
38 #include "DNA_listBase.h"
39 #include "DNA_movieclip_types.h"
40 #include "DNA_object_types.h"
41 #include "DNA_view3d_enums.h"
42
43 typedef struct RegionView3D {
44
45   /** GL_PROJECTION matrix. */
46   float winmat[4][4];
47   /** GL_MODELVIEW matrix. */
48   float viewmat[4][4];
49   /** Inverse of viewmat. */
50   float viewinv[4][4];
51   /** Viewmat*winmat. */
52   float persmat[4][4];
53   /** Inverse of persmat. */
54   float persinv[4][4];
55   /** Offset/scale for camera glsl texcoords. */
56   float viewcamtexcofac[4];
57
58   /** viewmat/persmat multiplied with object matrix, while drawing and selection. */
59   float viewmatob[4][4];
60   float persmatob[4][4];
61
62   /** User defined clipping planes. */
63   float clip[6][4];
64   /** Clip in object space,
65    * means we can test for clipping in editmode without first going into worldspace. */
66   float clip_local[6][4];
67   struct BoundBox *clipbb;
68
69   /** Allocated backup of its self while in localview. */
70   struct RegionView3D *localvd;
71   struct RenderEngine *render_engine;
72   struct ViewDepths *depths;
73
74   /** Animated smooth view. */
75   struct SmoothView3DStore *sms;
76   struct wmTimer *smooth_timer;
77
78   /** Transform gizmo matrix. */
79   float twmat[4][4];
80   /** min/max dot product on twmat xyz axis. */
81   float tw_axis_min[3], tw_axis_max[3];
82   float tw_axis_matrix[3][3];
83
84   float gridview DNA_DEPRECATED;
85
86   /** View rotation, must be kept normalized. */
87   float viewquat[4];
88   /** Distance from 'ofs' along -viewinv[2] vector, where result is negative as is 'ofs'. */
89   float dist;
90   /** Camera view offsets, 1.0 = viewplane moves entire width/height. */
91   float camdx, camdy;
92   /** Runtime only. */
93   float pixsize;
94   /**
95    * View center & orbit pivot, negative of worldspace location,
96    * also matches -viewinv[3][0:3] in ortho mode.
97    */
98   float ofs[3];
99   /** Viewport zoom on the camera frame, see BKE_screen_view3d_zoom_to_fac. */
100   float camzoom;
101   /**
102    * Check if persp/ortho view, since 'persp' cant be used for this since
103    * it can have cameras assigned as well. (only set in #view3d_winmatrix_set)
104    */
105   char is_persp;
106   char persp;
107   char view;
108   char view_axis_roll;
109   char viewlock; /* Should usually be accessed with RV3D_LOCK_FLAGS()! */
110   /** Options for runtime only locking (cleared on file read) */
111   char runtime_viewlock; /* Should usually be accessed with RV3D_LOCK_FLAGS()! */
112   /** Options for quadview (store while out of quad view). */
113   char viewlock_quad;
114   char _pad[1];
115   /** Normalized offset for locked view: (-1, -1) bottom left, (1, 1) upper right. */
116   float ofs_lock[2];
117
118   /** XXX can easily get rid of this (Julian). */
119   short twdrawflag;
120   short rflag;
121
122   /** Last view (use when switching out of camera view). */
123   float lviewquat[4];
124   /** Lpersp can never be set to 'RV3D_CAMOB'. */
125   char lpersp;
126   char lview;
127   char lview_axis_roll;
128   char _pad8[1];
129
130   /** Active rotation from NDOF or elsewhere. */
131   float rot_angle;
132   float rot_axis[3];
133 } RegionView3D;
134
135 typedef struct View3DCursor {
136   float location[3];
137
138   float rotation_quaternion[4];
139   float rotation_euler[3];
140   float rotation_axis[3], rotation_angle;
141   short rotation_mode;
142
143   char _pad[6];
144 } View3DCursor;
145
146 /** 3D Viewport Shading settings. */
147 typedef struct View3DShading {
148   /** Shading type (OB_SOLID, ..). */
149   char type;
150   /** Runtime, for toggle between rendered viewport. */
151   char prev_type;
152   char prev_type_wire;
153
154   char color_type;
155   short flag;
156
157   char light;
158   char background_type;
159   char cavity_type;
160   char wire_color_type;
161   char _pad[2];
162
163   /** FILE_MAXFILE. */
164   char studio_light[256];
165   /** FILE_MAXFILE. */
166   char lookdev_light[256];
167   /** FILE_MAXFILE. */
168   char matcap[256];
169
170   float shadow_intensity;
171   float single_color[3];
172
173   float studiolight_rot_z;
174   float studiolight_background;
175   float studiolight_intensity;
176   float studiolight_blur;
177
178   float object_outline_color[3];
179   float xray_alpha;
180   float xray_alpha_wire;
181
182   float cavity_valley_factor;
183   float cavity_ridge_factor;
184
185   float background_color[3];
186
187   float curvature_ridge_factor;
188   float curvature_valley_factor;
189
190   /* Render pass displayed in the viewport. Is an `eScenePassType` where one bit is set */
191   int render_pass;
192
193   struct IDProperty *prop;
194 } View3DShading;
195
196 /** 3D Viewport Overlay settings. */
197 typedef struct View3DOverlay {
198   int flag;
199
200   /** Edit mode settings. */
201   int edit_flag;
202   float normals_length;
203   float backwire_opacity;
204
205   /** Paint mode settings. */
206   int paint_flag;
207
208   /** Weight paint mode settings. */
209   int wpaint_flag;
210
211   /** Alpha for texture, weight, vertex paint overlay. */
212   float texture_paint_mode_opacity;
213   float vertex_paint_mode_opacity;
214   float weight_paint_mode_opacity;
215   float sculpt_mode_mask_opacity;
216   float sculpt_mode_face_sets_opacity;
217
218   /** Armature edit/pose mode settings. */
219   float xray_alpha_bone;
220
221   /** Other settings. */
222   float wireframe_threshold;
223
224   /** Grease pencil settings. */
225   float gpencil_paper_opacity;
226   float gpencil_grid_opacity;
227   float gpencil_fade_layer;
228
229   /** Factor for mixing vertex paint with original color */
230   float gpencil_vertex_paint_opacity;
231   char _pad4[4];
232 } View3DOverlay;
233
234 typedef struct View3D_Runtime {
235   /** Nkey panel stores stuff here. */
236   void *properties_storage;
237   /** Runtime only flags. */
238   int flag;
239
240   char _pad1[4];
241 } View3D_Runtime;
242
243 /** 3D ViewPort Struct. */
244 typedef struct View3D {
245   struct SpaceLink *next, *prev;
246   /** Storage of regions for inactive spaces. */
247   ListBase regionbase;
248   char spacetype;
249   char link_flag;
250   char _pad0[6];
251   /* End 'SpaceLink' header. */
252
253   float viewquat[4] DNA_DEPRECATED;
254   float dist DNA_DEPRECATED;
255
256   /** Size of bundles in reconstructed data. */
257   float bundle_size;
258   /** Display style for bundle. */
259   char bundle_drawtype;
260
261   char drawtype DNA_DEPRECATED;
262
263   char _pad3[1];
264
265   /** Multiview current eye - for internal use. */
266   char multiview_eye;
267
268   int object_type_exclude_viewport;
269   int object_type_exclude_select;
270
271   short persp DNA_DEPRECATED;
272   short view DNA_DEPRECATED;
273
274   struct Object *camera, *ob_center;
275   rctf render_border;
276
277   /** Allocated backup of its self while in localview. */
278   struct View3D *localvd;
279
280   /** Optional string for armature bone to define center, MAXBONENAME. */
281   char ob_center_bone[64];
282
283   unsigned short local_view_uuid;
284   char _pad6[2];
285   int layact DNA_DEPRECATED;
286   unsigned short local_collections_uuid;
287   short _pad7[3];
288
289   /** Optional bool for 3d cursor to define center. */
290   short ob_center_cursor;
291   short scenelock;
292   short gp_flag;
293   short flag;
294   int flag2;
295
296   float lens, grid;
297   float clip_start, clip_end;
298   float ofs[3] DNA_DEPRECATED;
299
300   char _pad[1];
301
302   /** Transform gizmo info. */
303   /** #V3D_GIZMO_SHOW_* */
304   char gizmo_flag;
305
306   char gizmo_show_object;
307   char gizmo_show_armature;
308   char gizmo_show_empty;
309   char gizmo_show_light;
310   char gizmo_show_camera;
311
312   char gridflag;
313
314   short gridlines;
315   /** Number of subdivisions in the grid between each highlighted grid line. */
316   short gridsubdiv;
317
318   /** Actually only used to define the opacity of the grease pencil vertex in edit mode. */
319   float vertex_opacity;
320
321   /* XXX deprecated? */
322   /** Grease-Pencil Data (annotation layers). */
323   struct bGPdata *gpd DNA_DEPRECATED;
324
325   /** Stereoscopy settings. */
326   short stereo3d_flag;
327   char stereo3d_camera;
328   char _pad4;
329   float stereo3d_convergence_factor;
330   float stereo3d_volume_alpha;
331   float stereo3d_convergence_alpha;
332
333   /** Display settings. */
334   View3DShading shading;
335   View3DOverlay overlay;
336
337   /** Runtime evaluation data (keep last). */
338   View3D_Runtime runtime;
339 } View3D;
340
341 /** #View3D.stereo3d_flag */
342 #define V3D_S3D_DISPCAMERAS (1 << 0)
343 #define V3D_S3D_DISPPLANE (1 << 1)
344 #define V3D_S3D_DISPVOLUME (1 << 2)
345
346 /** #View3D.flag */
347 #define V3D_LOCAL_COLLECTIONS (1 << 0)
348 #define V3D_FLAG_UNUSED_1 (1 << 1) /* cleared */
349 #define V3D_HIDE_HELPLINES (1 << 2)
350 #define V3D_INVALID_BACKBUF (1 << 3)
351 #define V3D_XR_SESSION_MIRROR (1 << 4)
352
353 #define V3D_FLAG_UNUSED_10 (1 << 10) /* cleared */
354 #define V3D_SELECT_OUTLINE (1 << 11)
355 #define V3D_FLAG_UNUSED_12 (1 << 12) /* cleared */
356 #define V3D_GLOBAL_STATS (1 << 13)
357 #define V3D_DRAW_CENTERS (1 << 15)
358
359 /** #View3D_Runtime.flag */
360 enum {
361   /** The 3D view which the XR session was created in is flagged with this. */
362   V3D_RUNTIME_XR_SESSION_ROOT = (1 << 0),
363 };
364
365 /** #RegionView3D.persp */
366 #define RV3D_ORTHO 0
367 #define RV3D_PERSP 1
368 #define RV3D_CAMOB 2
369
370 /** #RegionView3D.rflag */
371 #define RV3D_CLIPPING (1 << 2)
372 #define RV3D_NAVIGATING (1 << 3)
373 #define RV3D_GPULIGHT_UPDATE (1 << 4)
374 #define RV3D_PAINTING (1 << 5)
375 /*#define RV3D_IS_GAME_ENGINE       (1 << 5) */ /* UNUSED */
376 /**
377  * Disable zbuffer offset, skip calls to #ED_view3d_polygon_offset.
378  * Use when precise surface depth is needed and picking bias isn't, see T45434).
379  */
380 #define RV3D_ZOFFSET_DISABLED 64
381
382 /** #RegionView3D.viewlock */
383 enum {
384   RV3D_LOCK_ROTATION = (1 << 0),
385   RV3D_BOXVIEW = (1 << 1),
386   RV3D_BOXCLIP = (1 << 2),
387   RV3D_LOCK_LOCATION = (1 << 3),
388   RV3D_LOCK_ZOOM_AND_DOLLY = (1 << 4),
389
390   RV3D_LOCK_ANY_TRANSFORM = (RV3D_LOCK_LOCATION | RV3D_LOCK_ROTATION | RV3D_LOCK_ZOOM_AND_DOLLY),
391 };
392
393 /* Bitwise OR of the regular lock-flags with runtime only lock-flags. */
394 #define RV3D_LOCK_FLAGS(rv3d) ((rv3d)->viewlock | ((rv3d)->runtime_viewlock))
395
396 /** #RegionView3D.viewlock_quad */
397 #define RV3D_VIEWLOCK_INIT (1 << 7)
398
399 /** #RegionView3D.view */
400 #define RV3D_VIEW_USER 0
401 #define RV3D_VIEW_FRONT 1
402 #define RV3D_VIEW_BACK 2
403 #define RV3D_VIEW_LEFT 3
404 #define RV3D_VIEW_RIGHT 4
405 #define RV3D_VIEW_TOP 5
406 #define RV3D_VIEW_BOTTOM 6
407 #define RV3D_VIEW_CAMERA 8
408
409 #define RV3D_VIEW_IS_AXIS(view) (((view) >= RV3D_VIEW_FRONT) && ((view) <= RV3D_VIEW_BOTTOM))
410
411 /**
412  * #RegionView3D.view_axis_roll
413  *
414  * Clockwise rotation to use for axis-views, when #RV3D_VIEW_IS_AXIS is true.
415  */
416 enum {
417   RV3D_VIEW_AXIS_ROLL_0 = 0,
418   RV3D_VIEW_AXIS_ROLL_90 = 1,
419   RV3D_VIEW_AXIS_ROLL_180 = 2,
420   RV3D_VIEW_AXIS_ROLL_270 = 3,
421 };
422
423 #define RV3D_CLIPPING_ENABLED(v3d, rv3d) \
424   ((rv3d) && (v3d) && ((rv3d)->rflag & RV3D_CLIPPING) && \
425    ELEM((v3d)->shading.type, OB_WIRE, OB_SOLID) && (rv3d)->clipbb)
426
427 /** #View3D.flag2 (int) */
428 #define V3D_HIDE_OVERLAYS (1 << 2)
429 #define V3D_FLAG2_UNUSED_3 (1 << 3) /* cleared */
430 #define V3D_SHOW_ANNOTATION (1 << 4)
431 #define V3D_LOCK_CAMERA (1 << 5)
432 #define V3D_FLAG2_UNUSED_6 (1 << 6) /* cleared */
433 #define V3D_SHOW_RECONSTRUCTION (1 << 7)
434 #define V3D_SHOW_CAMERAPATH (1 << 8)
435 #define V3D_SHOW_BUNDLENAME (1 << 9)
436 #define V3D_FLAG2_UNUSED_10 (1 << 10) /* cleared */
437 #define V3D_RENDER_BORDER (1 << 11)
438 #define V3D_FLAG2_UNUSED_12 (1 << 12) /* cleared */
439 #define V3D_FLAG2_UNUSED_13 (1 << 13) /* cleared */
440 #define V3D_FLAG2_UNUSED_14 (1 << 14) /* cleared */
441 #define V3D_FLAG2_UNUSED_15 (1 << 15) /* cleared */
442
443 /** #View3D.gp_flag (short) */
444 #define V3D_GP_FADE_OBJECTS (1 << 0) /* Fade all non GP objects */
445 #define V3D_GP_SHOW_GRID (1 << 1)    /* Activate paper grid */
446 #define V3D_GP_SHOW_EDIT_LINES (1 << 2)
447 #define V3D_GP_SHOW_MULTIEDIT_LINES (1 << 3)
448 #define V3D_GP_SHOW_ONION_SKIN (1 << 4)       /* main switch at view level */
449 #define V3D_GP_FADE_NOACTIVE_LAYERS (1 << 5)  /* fade layers not active */
450 #define V3D_GP_FADE_NOACTIVE_GPENCIL (1 << 6) /* Fade other GPencil objects */
451 #define V3D_GP_SHOW_STROKE_DIRECTION (1 << 7) /* Show Strokes Directions */
452 #define V3D_GP_SHOW_MATERIAL_NAME (1 << 8)    /* Show Material names */
453
454 /** #View3DShading.flag */
455 enum {
456   V3D_SHADING_OBJECT_OUTLINE = (1 << 0),
457   V3D_SHADING_XRAY = (1 << 1),
458   V3D_SHADING_SHADOW = (1 << 2),
459   V3D_SHADING_SCENE_LIGHTS = (1 << 3),
460   V3D_SHADING_SPECULAR_HIGHLIGHT = (1 << 4),
461   V3D_SHADING_CAVITY = (1 << 5),
462   V3D_SHADING_MATCAP_FLIP_X = (1 << 6),
463   V3D_SHADING_SCENE_WORLD = (1 << 7),
464   V3D_SHADING_XRAY_WIREFRAME = (1 << 8),
465   V3D_SHADING_WORLD_ORIENTATION = (1 << 9),
466   V3D_SHADING_BACKFACE_CULLING = (1 << 10),
467   V3D_SHADING_DEPTH_OF_FIELD = (1 << 11),
468   V3D_SHADING_SCENE_LIGHTS_RENDER = (1 << 12),
469   V3D_SHADING_SCENE_WORLD_RENDER = (1 << 13),
470 };
471
472 /** #View3DShading.cavity_type */
473 enum {
474   V3D_SHADING_CAVITY_SSAO = 0,
475   V3D_SHADING_CAVITY_CURVATURE = 1,
476   V3D_SHADING_CAVITY_BOTH = 2,
477 };
478
479 /** #View3DOverlay.flag */
480 enum {
481   V3D_OVERLAY_FACE_ORIENTATION = (1 << 0),
482   V3D_OVERLAY_HIDE_CURSOR = (1 << 1),
483   V3D_OVERLAY_BONE_SELECT = (1 << 2),
484   V3D_OVERLAY_LOOK_DEV = (1 << 3),
485   V3D_OVERLAY_WIREFRAMES = (1 << 4),
486   V3D_OVERLAY_HIDE_TEXT = (1 << 5),
487   V3D_OVERLAY_HIDE_MOTION_PATHS = (1 << 6),
488   V3D_OVERLAY_ONION_SKINS = (1 << 7),
489   V3D_OVERLAY_HIDE_BONES = (1 << 8),
490   V3D_OVERLAY_HIDE_OBJECT_XTRAS = (1 << 9),
491   V3D_OVERLAY_HIDE_OBJECT_ORIGINS = (1 << 10),
492 };
493
494 /** #View3DOverlay.edit_flag */
495 enum {
496   V3D_OVERLAY_EDIT_VERT_NORMALS = (1 << 0),
497   V3D_OVERLAY_EDIT_LOOP_NORMALS = (1 << 1),
498   V3D_OVERLAY_EDIT_FACE_NORMALS = (1 << 2),
499
500   V3D_OVERLAY_EDIT_OCCLUDE_WIRE = (1 << 3),
501
502   V3D_OVERLAY_EDIT_WEIGHT = (1 << 4),
503
504   V3D_OVERLAY_EDIT_EDGES = (1 << 5),
505   V3D_OVERLAY_EDIT_FACES = (1 << 6),
506   V3D_OVERLAY_EDIT_FACE_DOT = (1 << 7),
507
508   V3D_OVERLAY_EDIT_SEAMS = (1 << 8),
509   V3D_OVERLAY_EDIT_SHARP = (1 << 9),
510   V3D_OVERLAY_EDIT_CREASES = (1 << 10),
511   V3D_OVERLAY_EDIT_BWEIGHTS = (1 << 11),
512
513   V3D_OVERLAY_EDIT_FREESTYLE_EDGE = (1 << 12),
514   V3D_OVERLAY_EDIT_FREESTYLE_FACE = (1 << 13),
515
516   V3D_OVERLAY_EDIT_STATVIS = (1 << 14),
517   V3D_OVERLAY_EDIT_EDGE_LEN = (1 << 15),
518   V3D_OVERLAY_EDIT_EDGE_ANG = (1 << 16),
519   V3D_OVERLAY_EDIT_FACE_ANG = (1 << 17),
520   V3D_OVERLAY_EDIT_FACE_AREA = (1 << 18),
521   V3D_OVERLAY_EDIT_INDICES = (1 << 19),
522
523   V3D_OVERLAY_EDIT_CU_HANDLES = (1 << 20),
524   V3D_OVERLAY_EDIT_CU_NORMALS = (1 << 21),
525 };
526
527 /** #View3DOverlay.paint_flag */
528 enum {
529   V3D_OVERLAY_PAINT_WIRE = (1 << 0),
530 };
531
532 /** #View3DOverlay.wpaint_flag */
533 enum {
534   V3D_OVERLAY_WPAINT_CONTOURS = (1 << 0),
535 };
536
537 /** #View3D.around */
538 enum {
539   /* center of the bounding box */
540   V3D_AROUND_CENTER_BOUNDS = 0,
541   /* center from the sum of all points divided by the total */
542   V3D_AROUND_CENTER_MEDIAN = 3,
543   /* pivot around the 2D/3D cursor */
544   V3D_AROUND_CURSOR = 1,
545   /* pivot around each items own origin */
546   V3D_AROUND_LOCAL_ORIGINS = 2,
547   /* pivot around the active items origin */
548   V3D_AROUND_ACTIVE = 4,
549 };
550
551 /** #View3d.gridflag */
552 #define V3D_SHOW_FLOOR (1 << 0)
553 #define V3D_SHOW_X (1 << 1)
554 #define V3D_SHOW_Y (1 << 2)
555 #define V3D_SHOW_Z (1 << 3)
556 #define V3D_SHOW_ORTHO_GRID (1 << 4)
557
558 /** #TransformOrientationSlot.type */
559 enum {
560   V3D_ORIENT_GLOBAL = 0,
561   V3D_ORIENT_LOCAL = 1,
562   V3D_ORIENT_NORMAL = 2,
563   V3D_ORIENT_VIEW = 3,
564   V3D_ORIENT_GIMBAL = 4,
565   V3D_ORIENT_CURSOR = 5,
566   V3D_ORIENT_CUSTOM = 1024,
567   /** Runtime only, never saved to DNA. */
568   V3D_ORIENT_CUSTOM_MATRIX = (V3D_ORIENT_CUSTOM - 1),
569 };
570
571 /** #View3d.gizmo_flag */
572 enum {
573   /** All gizmos. */
574   V3D_GIZMO_HIDE = (1 << 0),
575   V3D_GIZMO_HIDE_NAVIGATE = (1 << 1),
576   V3D_GIZMO_HIDE_CONTEXT = (1 << 2),
577   V3D_GIZMO_HIDE_TOOL = (1 << 3),
578 };
579
580 /** #View3d.gizmo_show_object */
581 enum {
582   V3D_GIZMO_SHOW_OBJECT_TRANSLATE = (1 << 0),
583   V3D_GIZMO_SHOW_OBJECT_ROTATE = (1 << 1),
584   V3D_GIZMO_SHOW_OBJECT_SCALE = (1 << 2),
585 };
586 /** #View3d.gizmo_show_armature */
587 enum {
588   /** Currently unused (WIP gizmo). */
589   V3D_GIZMO_SHOW_ARMATURE_BBONE = (1 << 0),
590   /** Not yet implemented. */
591   V3D_GIZMO_SHOW_ARMATURE_ROLL = (1 << 1),
592 };
593 /** #View3d.gizmo_show_empty */
594 enum {
595   V3D_GIZMO_SHOW_EMPTY_IMAGE = (1 << 0),
596   V3D_GIZMO_SHOW_EMPTY_FORCE_FIELD = (1 << 1),
597 };
598 /** #View3d.gizmo_show_light */
599 enum {
600   /** Use for both spot & area size. */
601   V3D_GIZMO_SHOW_LIGHT_SIZE = (1 << 0),
602   V3D_GIZMO_SHOW_LIGHT_LOOK_AT = (1 << 1),
603 };
604 /** #View3d.gizmo_show_camera */
605 enum {
606   /** Also used for ortho size. */
607   V3D_GIZMO_SHOW_CAMERA_LENS = (1 << 0),
608   V3D_GIZMO_SHOW_CAMERA_DOF_DIST = (1 << 2),
609 };
610
611 #define RV3D_CAMZOOM_MIN -30
612 #define RV3D_CAMZOOM_MAX 600
613
614 /** #BKE_screen_view3d_zoom_to_fac() values above */
615 #define RV3D_CAMZOOM_MIN_FACTOR 0.1657359312880714853f
616 #define RV3D_CAMZOOM_MAX_FACTOR 44.9852813742385702928f
617
618 #endif