1 /*
2  * This program source code file is part of KiCad, a free EDA CAD application.
3  *
4  * Copyright (C) 2016 Mario Luzeiro <mrluzeiro@ua.pt>
5  * Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, you may find one here:
19  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20  * or you may search the http://www.gnu.org website for the version 2 license,
21  * or you may write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
23  */
24 
25 /**
26  * @file  3d_enums.h
27  * @brief declared enumerations and flags
28  */
29 
30 #ifndef _3D_ENUMS_H_
31 #define _3D_ENUMS_H_
32 
33 /// Flags used in rendering options
34 enum DISPLAY3D_FLG
35 {
36     FL_AXIS = 0,
37     FL_ZONE,
38     FL_ADHESIVE,
39     FL_SILKSCREEN,
40     FL_SOLDERMASK,
41     FL_SOLDERPASTE,
42     FL_COMMENTS,
43     FL_ECO,
44 
45     FL_FP_ATTRIBUTES_NORMAL,
46     FL_FP_ATTRIBUTES_NORMAL_INSERT,
47     FL_FP_ATTRIBUTES_VIRTUAL,
48 
49     FL_USE_SELECTION,
50     FL_HIGHLIGHT_ROLLOVER_ITEM,
51 
52     FL_SHOW_BOARD_BODY,
53     FL_MOUSEWHEEL_PANNING,
54     FL_USE_REALISTIC_MODE,
55     FL_SUBTRACT_MASK_FROM_SILK,
56     FL_CLIP_SILK_ON_VIA_ANNULUS,
57     FL_RENDER_PLATED_PADS_AS_PLATED,
58 
59     // OpenGL options
60     FL_RENDER_OPENGL_SHOW_MODEL_BBOX,
61     FL_RENDER_OPENGL_COPPER_THICKNESS,
62     FL_RENDER_OPENGL_AA_DISABLE_ON_MOVE,
63     FL_RENDER_OPENGL_THICKNESS_DISABLE_ON_MOVE,
64     FL_RENDER_OPENGL_VIAS_DISABLE_ON_MOVE,
65     FL_RENDER_OPENGL_HOLES_DISABLE_ON_MOVE,
66 
67     // Raytracing options
68     FL_RENDER_RAYTRACING_SHADOWS,
69     FL_RENDER_RAYTRACING_BACKFLOOR,
70     FL_RENDER_RAYTRACING_REFRACTIONS,
71     FL_RENDER_RAYTRACING_REFLECTIONS,
72     FL_RENDER_RAYTRACING_POST_PROCESSING,
73     FL_RENDER_RAYTRACING_ANTI_ALIASING,
74     FL_RENDER_RAYTRACING_PROCEDURAL_TEXTURES,
75     FL_LAST
76 };
77 
78 
79 /// Rotation direction for the 3d canvas
80 enum class ROTATION_DIR
81 {
82     X_CW,
83     X_CCW,
84     Y_CW,
85     Y_CCW,
86     Z_CW,
87     Z_CCW
88 };
89 
90 
91 /// Camera types
92 enum class CAMERA_TYPE
93 {
94     TRACKBALL
95 };
96 
97 
98 /// Grid types
99 enum class GRID3D_TYPE
100 {
101     NONE,
102     GRID_1MM,
103     GRID_2P5MM,
104     GRID_5MM,
105     GRID_10MM
106 };
107 
108 
109 /// Render engine mode
110 enum class RENDER_ENGINE
111 {
112     OPENGL,
113     RAYTRACING,
114 };
115 
116 
117 /// Render 3d model shape materials mode
118 enum class MATERIAL_MODE
119 {
120     NORMAL,       ///< Use all material properties from model file
121     DIFFUSE_ONLY, ///< Use only diffuse material properties
122     CAD_MODE      ///< Use a gray shading based on diffuse material
123 };
124 
125 #endif // _3D_ENUMS_H_
126