Blender  V2.93
DNA_view3d_types.h
Go to the documentation of this file.
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 
24 #pragma once
25 
26 struct BoundBox;
27 struct Object;
28 struct RenderEngine;
29 struct SmoothView3DStore;
30 struct SpaceLink;
31 struct ViewDepths;
32 struct bGPdata;
33 struct wmTimer;
34 
35 #include "DNA_defs.h"
36 #include "DNA_image_types.h"
37 #include "DNA_listBase.h"
38 #include "DNA_movieclip_types.h"
39 #include "DNA_object_types.h"
40 #include "DNA_view3d_enums.h"
41 
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45 
46 typedef struct RegionView3D {
47 
49  float winmat[4][4];
51  float viewmat[4][4];
53  float viewinv[4][4];
55  float persmat[4][4];
57  float persinv[4][4];
59  float viewcamtexcofac[4];
60 
62  float viewmatob[4][4];
63  float persmatob[4][4];
64 
66  float clip[6][4];
69  float clip_local[6][4];
70  struct BoundBox *clipbb;
71 
75  struct ViewDepths *depths;
76 
80 
82  float twmat[4][4];
84  float tw_axis_min[3], tw_axis_max[3];
85  float tw_axis_matrix[3][3];
86 
87  float gridview DNA_DEPRECATED;
88 
90  float viewquat[4];
92  float dist;
94  float camdx, camdy;
96  float pixsize;
101  float ofs[3];
103  float camzoom;
108  char is_persp;
109  char persp;
110  char view;
112  char viewlock; /* Should usually be accessed with RV3D_LOCK_FLAGS()! */
114  char runtime_viewlock; /* Should usually be accessed with RV3D_LOCK_FLAGS()! */
117  char _pad[1];
119  float ofs_lock[2];
120 
122  short twdrawflag;
123  short rflag;
124 
126  float lviewquat[4];
128  char lpersp;
129  char lview;
131  char _pad8[1];
132 
134  float rot_angle;
135  float rot_axis[3];
137 
138 typedef struct View3DCursor {
139  float location[3];
140 
142  float rotation_euler[3];
145 
146  char _pad[6];
148 
150 typedef struct View3DShading {
152  char type;
154  char prev_type;
156 
158  short flag;
159 
160  char light;
164  char _pad[2];
165 
167  char studio_light[256];
169  char lookdev_light[256];
171  char matcap[256];
172 
174  float single_color[3];
175 
180 
182  float xray_alpha;
184 
187 
189 
192 
193  /* Render pass displayed in the viewport. Is an `eScenePassType` where one bit is set */
195  char aov_name[64];
196 
197  struct IDProperty *prop;
198  void *_pad2;
200 
202 typedef struct View3DOverlay {
203  int flag;
204 
209 
212 
215 
222 
225 
227  float fade_alpha;
228 
232 
237 
243 
244 /* View3DOverlay->handle_display */
245 typedef enum eHandleDisplay {
246  /* Display only selected points. */
248  /* Display all handles. */
250  /* No display handles. */
253 
254 typedef struct View3D_Runtime {
258  int flag;
259 
260  char _pad1[4];
262 
264 typedef struct View3D {
265  struct SpaceLink *next, *prev;
268  char spacetype;
269  char link_flag;
270  char _pad0[6];
271  /* End 'SpaceLink' header. */
272 
273  float viewquat[4] DNA_DEPRECATED;
274  float dist DNA_DEPRECATED;
275 
277  float bundle_size;
280 
281  char drawtype DNA_DEPRECATED;
282 
283  char _pad3[1];
284 
287 
290 
291  short persp DNA_DEPRECATED;
293 
296 
298  struct View3D *localvd;
299 
301  char ob_center_bone[64];
302 
303  unsigned short local_view_uuid;
304  char _pad6[2];
305  int layact DNA_DEPRECATED;
306  unsigned short local_collections_uuid;
307  short _pad7[3];
308 
311  short scenelock;
312  short gp_flag;
313  short flag;
314  int flag2;
315 
316  float lens, grid;
318  float ofs[3] DNA_DEPRECATED;
319 
320  char _pad[1];
321 
325 
331 
332  char gridflag;
333 
334  short gridlines;
336  short gridsubdiv;
337 
340 
341  /* XXX deprecated? */
343  struct bGPdata *gpd DNA_DEPRECATED;
344 
348  char _pad4;
352 
356 
360 
362 #define V3D_S3D_DISPCAMERAS (1 << 0)
363 #define V3D_S3D_DISPPLANE (1 << 1)
364 #define V3D_S3D_DISPVOLUME (1 << 2)
365 
367 #define V3D_LOCAL_COLLECTIONS (1 << 0)
368 #define V3D_FLAG_UNUSED_1 (1 << 1) /* cleared */
369 #define V3D_HIDE_HELPLINES (1 << 2)
370 #define V3D_FLAG_UNUSED_2 (1 << 3) /* cleared */
371 #define V3D_XR_SESSION_MIRROR (1 << 4)
372 
373 #define V3D_FLAG_UNUSED_10 (1 << 10) /* cleared */
374 #define V3D_SELECT_OUTLINE (1 << 11)
375 #define V3D_FLAG_UNUSED_12 (1 << 12) /* cleared */
376 #define V3D_GLOBAL_STATS (1 << 13)
377 #define V3D_DRAW_CENTERS (1 << 15)
378 
380 enum {
385 };
386 
388 #define RV3D_ORTHO 0
389 #define RV3D_PERSP 1
390 #define RV3D_CAMOB 2
391 
393 #define RV3D_CLIPPING (1 << 2)
394 #define RV3D_NAVIGATING (1 << 3)
395 #define RV3D_GPULIGHT_UPDATE (1 << 4)
396 #define RV3D_PAINTING (1 << 5)
397 /*#define RV3D_IS_GAME_ENGINE (1 << 5) */ /* UNUSED */
402 #define RV3D_ZOFFSET_DISABLED 64
403 
405 enum {
406  RV3D_LOCK_ROTATION = (1 << 0),
407  RV3D_BOXVIEW = (1 << 1),
408  RV3D_BOXCLIP = (1 << 2),
409  RV3D_LOCK_LOCATION = (1 << 3),
411 
413 };
414 
415 /* Bitwise OR of the regular lock-flags with runtime only lock-flags. */
416 #define RV3D_LOCK_FLAGS(rv3d) ((rv3d)->viewlock | ((rv3d)->runtime_viewlock))
417 
419 #define RV3D_VIEWLOCK_INIT (1 << 7)
420 
422 #define RV3D_VIEW_USER 0
423 #define RV3D_VIEW_FRONT 1
424 #define RV3D_VIEW_BACK 2
425 #define RV3D_VIEW_LEFT 3
426 #define RV3D_VIEW_RIGHT 4
427 #define RV3D_VIEW_TOP 5
428 #define RV3D_VIEW_BOTTOM 6
429 #define RV3D_VIEW_CAMERA 8
430 
431 #define RV3D_VIEW_IS_AXIS(view) (((view) >= RV3D_VIEW_FRONT) && ((view) <= RV3D_VIEW_BOTTOM))
432 
438 enum {
443 };
444 
445 #define RV3D_CLIPPING_ENABLED(v3d, rv3d) \
446  ((rv3d) && (v3d) && ((rv3d)->rflag & RV3D_CLIPPING) && \
447  ELEM((v3d)->shading.type, OB_WIRE, OB_SOLID) && (rv3d)->clipbb)
448 
450 #define V3D_HIDE_OVERLAYS (1 << 2)
451 #define V3D_FLAG2_UNUSED_3 (1 << 3) /* cleared */
452 #define V3D_SHOW_ANNOTATION (1 << 4)
453 #define V3D_LOCK_CAMERA (1 << 5)
454 #define V3D_FLAG2_UNUSED_6 (1 << 6) /* cleared */
455 #define V3D_SHOW_RECONSTRUCTION (1 << 7)
456 #define V3D_SHOW_CAMERAPATH (1 << 8)
457 #define V3D_SHOW_BUNDLENAME (1 << 9)
458 #define V3D_FLAG2_UNUSED_10 (1 << 10) /* cleared */
459 #define V3D_RENDER_BORDER (1 << 11)
460 #define V3D_FLAG2_UNUSED_12 (1 << 12) /* cleared */
461 #define V3D_FLAG2_UNUSED_13 (1 << 13) /* cleared */
462 #define V3D_FLAG2_UNUSED_14 (1 << 14) /* cleared */
463 #define V3D_FLAG2_UNUSED_15 (1 << 15) /* cleared */
464 
466 #define V3D_GP_FADE_OBJECTS (1 << 0) /* Fade all non GP objects */
467 #define V3D_GP_SHOW_GRID (1 << 1) /* Activate paper grid */
468 #define V3D_GP_SHOW_EDIT_LINES (1 << 2)
469 #define V3D_GP_SHOW_MULTIEDIT_LINES (1 << 3)
470 #define V3D_GP_SHOW_ONION_SKIN (1 << 4) /* main switch at view level */
471 #define V3D_GP_FADE_NOACTIVE_LAYERS (1 << 5) /* fade layers not active */
472 #define V3D_GP_FADE_NOACTIVE_GPENCIL (1 << 6) /* Fade other GPencil objects */
473 #define V3D_GP_SHOW_STROKE_DIRECTION (1 << 7) /* Show Strokes Directions */
474 #define V3D_GP_SHOW_MATERIAL_NAME (1 << 8) /* Show Material names */
475 #define V3D_GP_SHOW_GRID_XRAY (1 << 9) /* Show Canvas Grid on Top */
476 
478 enum {
480  V3D_SHADING_XRAY = (1 << 1),
481  V3D_SHADING_SHADOW = (1 << 2),
484  V3D_SHADING_CAVITY = (1 << 5),
494 };
495 
497 enum {
501 };
502 
504 enum {
516  V3D_OVERLAY_STATS = (1 << 11),
518 };
519 
521 enum {
525 
527 
529 
533 
538 
541 
548 
549  /* Deprecated. */
550  /* V3D_OVERLAY_EDIT_CU_HANDLES = (1 << 20), */
551 
553 };
554 
556 enum {
558 };
559 
561 enum {
563 };
564 
566 enum {
567  /* center of the bounding box */
569  /* center from the sum of all points divided by the total */
571  /* pivot around the 2D/3D cursor */
573  /* pivot around each items own origin */
575  /* pivot around the active items origin */
577 };
578 
580 #define V3D_SHOW_FLOOR (1 << 0)
581 #define V3D_SHOW_X (1 << 1)
582 #define V3D_SHOW_Y (1 << 2)
583 #define V3D_SHOW_Z (1 << 3)
584 #define V3D_SHOW_ORTHO_GRID (1 << 4)
585 
587 enum {
597 };
598 
600 enum {
602  V3D_GIZMO_HIDE = (1 << 0),
606 };
607 
609 enum {
613 };
615 enum {
620 };
622 enum {
625 };
627 enum {
631 };
633 enum {
637 };
638 
639 #define RV3D_CAMZOOM_MIN -30
640 #define RV3D_CAMZOOM_MAX 600
641 
643 #define RV3D_CAMZOOM_MIN_FACTOR 0.1657359312880714853f
644 #define RV3D_CAMZOOM_MAX_FACTOR 44.9852813742385702928f
645 
646 #ifdef __cplusplus
647 }
648 #endif
These structs are the foundation for all linked lists in the library system.
Object is a sort of wrapper for general info.
@ V3D_GIZMO_SHOW_ARMATURE_BBONE
@ V3D_GIZMO_SHOW_ARMATURE_ROLL
@ V3D_ORIENT_NORMAL
@ V3D_ORIENT_CUSTOM
@ V3D_ORIENT_GLOBAL
@ V3D_ORIENT_CUSTOM_MATRIX
@ V3D_ORIENT_LOCAL
@ V3D_ORIENT_VIEW
@ V3D_ORIENT_CURSOR
@ V3D_ORIENT_GIMBAL
struct View3DOverlay View3DOverlay
@ V3D_AROUND_ACTIVE
@ V3D_AROUND_CENTER_BOUNDS
@ V3D_AROUND_CURSOR
@ V3D_AROUND_CENTER_MEDIAN
@ V3D_AROUND_LOCAL_ORIGINS
@ V3D_OVERLAY_EDIT_VERT_NORMALS
@ V3D_OVERLAY_EDIT_INDICES
@ V3D_OVERLAY_EDIT_FREESTYLE_FACE
@ V3D_OVERLAY_EDIT_LOOP_NORMALS
@ V3D_OVERLAY_EDIT_CU_NORMALS
@ V3D_OVERLAY_EDIT_FACE_NORMALS
@ V3D_OVERLAY_EDIT_CREASES
@ V3D_OVERLAY_EDIT_FREESTYLE_EDGE
@ V3D_OVERLAY_EDIT_FACES
@ V3D_OVERLAY_EDIT_FACE_AREA
@ V3D_OVERLAY_EDIT_EDGE_ANG
@ V3D_OVERLAY_EDIT_FACE_DOT
@ V3D_OVERLAY_EDIT_FACE_ANG
@ V3D_OVERLAY_EDIT_OCCLUDE_WIRE
@ V3D_OVERLAY_EDIT_SEAMS
@ V3D_OVERLAY_EDIT_STATVIS
@ V3D_OVERLAY_EDIT_BWEIGHTS
@ V3D_OVERLAY_EDIT_WEIGHT
@ V3D_OVERLAY_EDIT_SHARP
@ V3D_OVERLAY_EDIT_EDGES
@ V3D_OVERLAY_EDIT_EDGE_LEN
@ V3D_OVERLAY_WPAINT_CONTOURS
@ V3D_GIZMO_SHOW_LIGHT_LOOK_AT
@ V3D_GIZMO_SHOW_LIGHT_SIZE
struct RegionView3D RegionView3D
@ V3D_OVERLAY_PAINT_WIRE
@ V3D_SHADING_CAVITY_BOTH
@ V3D_SHADING_CAVITY_SSAO
@ V3D_SHADING_CAVITY_CURVATURE
struct View3D_Runtime View3D_Runtime
@ V3D_GIZMO_SHOW_EMPTY_FORCE_FIELD
@ V3D_GIZMO_SHOW_EMPTY_IMAGE
struct View3DShading View3DShading
@ RV3D_LOCK_ANY_TRANSFORM
@ RV3D_LOCK_ROTATION
@ RV3D_LOCK_LOCATION
@ RV3D_LOCK_ZOOM_AND_DOLLY
@ RV3D_BOXVIEW
@ RV3D_BOXCLIP
@ V3D_GIZMO_SHOW_CAMERA_DOF_DIST
@ V3D_GIZMO_SHOW_CAMERA_LENS
@ V3D_RUNTIME_XR_SESSION_ROOT
@ V3D_RUNTIME_DEPTHBUF_OVERRIDDEN
struct View3DCursor View3DCursor
@ V3D_GIZMO_SHOW_OBJECT_ROTATE
@ V3D_GIZMO_SHOW_OBJECT_SCALE
@ V3D_GIZMO_SHOW_OBJECT_TRANSLATE
eHandleDisplay
@ CURVE_HANDLE_NONE
@ CURVE_HANDLE_ALL
@ CURVE_HANDLE_SELECTED
@ V3D_OVERLAY_LOOK_DEV
@ V3D_OVERLAY_FACE_ORIENTATION
@ V3D_OVERLAY_HIDE_OBJECT_ORIGINS
@ V3D_OVERLAY_HIDE_BONES
@ V3D_OVERLAY_HIDE_MOTION_PATHS
@ V3D_OVERLAY_WIREFRAMES
@ V3D_OVERLAY_HIDE_OBJECT_XTRAS
@ V3D_OVERLAY_ONION_SKINS
@ V3D_OVERLAY_FADE_INACTIVE
@ V3D_OVERLAY_HIDE_CURSOR
@ V3D_OVERLAY_HIDE_TEXT
@ V3D_OVERLAY_STATS
@ V3D_OVERLAY_BONE_SELECT
struct View3D View3D
@ RV3D_VIEW_AXIS_ROLL_270
@ RV3D_VIEW_AXIS_ROLL_180
@ RV3D_VIEW_AXIS_ROLL_90
@ RV3D_VIEW_AXIS_ROLL_0
@ V3D_SHADING_SHADOW
@ V3D_SHADING_SCENE_WORLD_RENDER
@ V3D_SHADING_SPECULAR_HIGHLIGHT
@ V3D_SHADING_DEPTH_OF_FIELD
@ V3D_SHADING_WORLD_ORIENTATION
@ V3D_SHADING_SCENE_WORLD
@ V3D_SHADING_OBJECT_OUTLINE
@ V3D_SHADING_SCENE_LIGHTS
@ V3D_SHADING_CAVITY
@ V3D_SHADING_SCENE_LIGHTS_RENDER
@ V3D_SHADING_STUDIOLIGHT_VIEW_ROTATION
@ V3D_SHADING_MATCAP_FLIP_X
@ V3D_SHADING_XRAY_WIREFRAME
@ V3D_SHADING_XRAY
@ V3D_SHADING_BACKFACE_CULLING
@ V3D_GIZMO_HIDE_TOOL
@ V3D_GIZMO_HIDE
@ V3D_GIZMO_HIDE_NAVIGATE
@ V3D_GIZMO_HIDE_CONTEXT
static AppView * view
float viewcamtexcofac[4]
float viewmatob[4][4]
float tw_axis_matrix[3][3]
struct RenderEngine * render_engine
float tw_axis_min[3]
struct SmoothView3DStore * sms
float gridview DNA_DEPRECATED
float viewquat[4]
float tw_axis_max[3]
float persmat[4][4]
float lviewquat[4]
struct RegionView3D * localvd
float clip[6][4]
float twmat[4][4]
float persinv[4][4]
float viewmat[4][4]
float persmatob[4][4]
struct ViewDepths * depths
float clip_local[6][4]
struct wmTimer * smooth_timer
float viewinv[4][4]
struct BoundBox * clipbb
float winmat[4][4]
float rotation_axis[3]
float rotation_quaternion[4]
float rotation_euler[3]
float sculpt_mode_mask_opacity
float gpencil_grid_opacity
float sculpt_mode_face_sets_opacity
float gpencil_paper_opacity
float texture_paint_mode_opacity
float vertex_paint_mode_opacity
float gpencil_vertex_paint_opacity
float weight_paint_mode_opacity
float studiolight_background
float curvature_ridge_factor
float background_color[3]
float object_outline_color[3]
float cavity_valley_factor
float curvature_valley_factor
float studiolight_intensity
char studio_light[256]
float single_color[3]
char lookdev_light[256]
struct IDProperty * prop
char multiview_eye
float vertex_opacity
char drawtype DNA_DEPRECATED
float bundle_size
View3DOverlay overlay
char gizmo_show_armature
unsigned short local_view_uuid
rctf render_border
char gizmo_show_light
char gizmo_show_camera
float clip_end
View3D_Runtime runtime
float stereo3d_convergence_factor
char _pad3[1]
struct Object * camera
float viewquat[4] DNA_DEPRECATED
char gizmo_show_empty
short gridsubdiv
char stereo3d_camera
char _pad0[6]
struct View3D * localvd
char ob_center_bone[64]
short _pad7[3]
float ofs[3] DNA_DEPRECATED
float dist DNA_DEPRECATED
short persp DNA_DEPRECATED
struct bGPdata *gpd DNA_DEPRECATED
struct SpaceLink * next
short view DNA_DEPRECATED
short scenelock
char spacetype
char link_flag
unsigned short local_collections_uuid
short gridlines
struct SpaceLink * prev
float stereo3d_volume_alpha
int object_type_exclude_select
short ob_center_cursor
int layact DNA_DEPRECATED
char _pad6[2]
struct Object * ob_center
int object_type_exclude_viewport
ListBase regionbase
char gizmo_flag
char _pad[1]
View3DShading shading
char bundle_drawtype
short stereo3d_flag
float stereo3d_convergence_alpha
char gizmo_show_object
float clip_start
short gp_flag