Eevee: TAA: Remove 32 sample limit.
[blender.git] / source / blender / makesrna / intern / rna_context.c
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * Contributor(s): Blender Foundation (2009).
19  *
20  * ***** END GPL LICENSE BLOCK *****
21  */
22
23 /** \file blender/makesrna/intern/rna_context.c
24  *  \ingroup RNA
25  */
26
27 #include <stdlib.h>
28
29 #include "DNA_ID.h"
30 #include "DNA_userdef_types.h"
31
32 #include "BLI_utildefines.h"
33 #include "BKE_context.h"
34
35 #include "RNA_access.h"
36 #include "RNA_define.h"
37
38 #include "rna_internal.h" /* own include */
39
40 #ifdef RNA_RUNTIME
41
42 static PointerRNA rna_Context_manager_get(PointerRNA *ptr)
43 {
44         bContext *C = (bContext *)ptr->data;
45         return rna_pointer_inherit_refine(ptr, &RNA_WindowManager, CTX_wm_manager(C));
46 }
47
48 static PointerRNA rna_Context_window_get(PointerRNA *ptr)
49 {
50         bContext *C = (bContext *)ptr->data;
51         return rna_pointer_inherit_refine(ptr, &RNA_Window, CTX_wm_window(C));
52 }
53
54 static PointerRNA rna_Context_workspace_get(PointerRNA *ptr)
55 {
56         bContext *C = (bContext *)ptr->data;
57         return rna_pointer_inherit_refine(ptr, &RNA_WorkSpace, CTX_wm_workspace(C));
58 }
59
60 static PointerRNA rna_Context_screen_get(PointerRNA *ptr)
61 {
62         bContext *C = (bContext *)ptr->data;
63         return rna_pointer_inherit_refine(ptr, &RNA_Screen, CTX_wm_screen(C));
64 }
65
66 static PointerRNA rna_Context_area_get(PointerRNA *ptr)
67 {
68         bContext *C = (bContext *)ptr->data;
69         PointerRNA newptr;
70         RNA_pointer_create((ID *)CTX_wm_screen(C), &RNA_Area, CTX_wm_area(C), &newptr);
71         return newptr;
72 }
73
74 static PointerRNA rna_Context_space_data_get(PointerRNA *ptr)
75 {
76         bContext *C = (bContext *)ptr->data;
77         PointerRNA newptr;
78         RNA_pointer_create((ID *)CTX_wm_screen(C), &RNA_Space, CTX_wm_space_data(C), &newptr);
79         return newptr;
80 }
81
82 static PointerRNA rna_Context_region_get(PointerRNA *ptr)
83 {
84         bContext *C = (bContext *)ptr->data;
85         PointerRNA newptr;
86         RNA_pointer_create((ID *)CTX_wm_screen(C), &RNA_Region, CTX_wm_region(C), &newptr);
87         return newptr;
88 }
89
90 static PointerRNA rna_Context_region_data_get(PointerRNA *ptr)
91 {
92         bContext *C = (bContext *)ptr->data;
93
94         /* only exists for one space still, no generic system yet */
95         if (CTX_wm_view3d(C)) {
96                 PointerRNA newptr;
97                 RNA_pointer_create((ID *)CTX_wm_screen(C), &RNA_RegionView3D, CTX_wm_region_data(C), &newptr);
98                 return newptr;
99         }
100
101         return PointerRNA_NULL;
102 }
103
104 static PointerRNA rna_Context_manipulator_group_get(PointerRNA *ptr)
105 {
106         bContext *C = (bContext *)ptr->data;
107         PointerRNA newptr;
108         RNA_pointer_create(NULL, &RNA_ManipulatorGroup, CTX_wm_manipulator_group(C), &newptr);
109         return newptr;
110 }
111
112 static PointerRNA rna_Context_main_get(PointerRNA *ptr)
113 {
114         bContext *C = (bContext *)ptr->data;
115         return rna_pointer_inherit_refine(ptr, &RNA_BlendData, CTX_data_main(C));
116 }
117
118 static PointerRNA rna_Context_depsgraph_get(PointerRNA *ptr)
119 {
120         bContext *C = (bContext *)ptr->data;
121         return rna_pointer_inherit_refine(ptr, &RNA_Depsgraph, CTX_data_depsgraph(C));
122 }
123
124 static PointerRNA rna_Context_scene_get(PointerRNA *ptr)
125 {
126         bContext *C = (bContext *)ptr->data;
127         return rna_pointer_inherit_refine(ptr, &RNA_Scene, CTX_data_scene(C));
128 }
129
130 static PointerRNA rna_Context_scene_layer_get(PointerRNA *ptr)
131 {
132         bContext *C = (bContext *)ptr->data;
133         return rna_pointer_inherit_refine(ptr, &RNA_SceneLayer, CTX_data_scene_layer(C));
134 }
135
136 static PointerRNA rna_Context_scene_collection_get(PointerRNA *ptr)
137 {
138         bContext *C = (bContext *)ptr->data;
139         ptr->id.data = CTX_data_scene(C);
140         return rna_pointer_inherit_refine(ptr, &RNA_SceneCollection, CTX_data_scene_collection(C));
141 }
142
143 static PointerRNA rna_Context_layer_collection_get(PointerRNA *ptr)
144 {
145         bContext *C = (bContext *)ptr->data;
146         ptr->id.data = CTX_data_scene(C);
147         return rna_pointer_inherit_refine(ptr, &RNA_LayerCollection, CTX_data_layer_collection(C));
148 }
149
150 static PointerRNA rna_Context_tool_settings_get(PointerRNA *ptr)
151 {
152         bContext *C = (bContext *)ptr->data;
153         ptr->id.data = CTX_data_scene(C);
154         return rna_pointer_inherit_refine(ptr, &RNA_ToolSettings, CTX_data_tool_settings(C));
155 }
156
157 static PointerRNA rna_Context_user_preferences_get(PointerRNA *UNUSED(ptr))
158 {
159         PointerRNA newptr;
160         RNA_pointer_create(NULL, &RNA_UserPreferences, &U, &newptr);
161         return newptr;
162 }
163
164 static int rna_Context_mode_get(PointerRNA *ptr)
165 {
166         bContext *C = (bContext *)ptr->data;
167         return CTX_data_mode_enum(C);
168 }
169
170 #else
171
172 void RNA_def_context(BlenderRNA *brna)
173 {
174         StructRNA *srna;
175         PropertyRNA *prop;
176
177         static EnumPropertyItem mode_items[] = {
178                 {CTX_MODE_EDIT_MESH, "EDIT_MESH", 0, "Mesh Edit", ""},
179                 {CTX_MODE_EDIT_CURVE, "EDIT_CURVE", 0, "Curve Edit", ""},
180                 {CTX_MODE_EDIT_SURFACE, "EDIT_SURFACE", 0, "Surface Edit", ""},
181                 {CTX_MODE_EDIT_TEXT, "EDIT_TEXT", 0, "Edit Edit", ""},
182                 {CTX_MODE_EDIT_ARMATURE, "EDIT_ARMATURE", 0, "Armature Edit", ""}, /* PARSKEL reuse will give issues */
183                 {CTX_MODE_EDIT_METABALL, "EDIT_METABALL", 0, "Metaball Edit", ""},
184                 {CTX_MODE_EDIT_LATTICE, "EDIT_LATTICE", 0, "Lattice Edit", ""},
185                 {CTX_MODE_POSE, "POSE", 0, "Pose ", ""},
186                 {CTX_MODE_SCULPT, "SCULPT", 0, "Sculpt", ""},
187                 {CTX_MODE_PAINT_WEIGHT, "PAINT_WEIGHT", 0, "Weight Paint", ""},
188                 {CTX_MODE_PAINT_VERTEX, "PAINT_VERTEX", 0, "Vertex Paint", ""},
189                 {CTX_MODE_PAINT_TEXTURE, "PAINT_TEXTURE", 0, "Texture Paint", ""},
190                 {CTX_MODE_PARTICLE, "PARTICLE", 0, "Particle", ""},
191                 {CTX_MODE_OBJECT, "OBJECT", 0, "Object", ""},
192                 {0, NULL, 0, NULL, NULL}
193         };
194
195         srna = RNA_def_struct(brna, "Context", NULL);
196         RNA_def_struct_ui_text(srna, "Context", "Current windowmanager and data context");
197         RNA_def_struct_sdna(srna, "bContext");
198
199         /* WM */
200         prop = RNA_def_property(srna, "window_manager", PROP_POINTER, PROP_NONE);
201         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
202         RNA_def_property_struct_type(prop, "WindowManager");
203         RNA_def_property_pointer_funcs(prop, "rna_Context_manager_get", NULL, NULL, NULL);
204
205         prop = RNA_def_property(srna, "window", PROP_POINTER, PROP_NONE);
206         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
207         RNA_def_property_struct_type(prop, "Window");
208         RNA_def_property_pointer_funcs(prop, "rna_Context_window_get", NULL, NULL, NULL);
209
210         prop = RNA_def_property(srna, "workspace", PROP_POINTER, PROP_NONE);
211         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
212         RNA_def_property_struct_type(prop, "WorkSpace");
213         RNA_def_property_pointer_funcs(prop, "rna_Context_workspace_get", NULL, NULL, NULL);
214
215         prop = RNA_def_property(srna, "screen", PROP_POINTER, PROP_NONE);
216         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
217         RNA_def_property_struct_type(prop, "Screen");
218         RNA_def_property_pointer_funcs(prop, "rna_Context_screen_get", NULL, NULL, NULL);
219
220         prop = RNA_def_property(srna, "area", PROP_POINTER, PROP_NONE);
221         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
222         RNA_def_property_struct_type(prop, "Area");
223         RNA_def_property_pointer_funcs(prop, "rna_Context_area_get", NULL, NULL, NULL);
224
225         prop = RNA_def_property(srna, "space_data", PROP_POINTER, PROP_NONE);
226         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
227         RNA_def_property_struct_type(prop, "Space");
228         RNA_def_property_pointer_funcs(prop, "rna_Context_space_data_get", NULL, NULL, NULL);
229
230         prop = RNA_def_property(srna, "region", PROP_POINTER, PROP_NONE);
231         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
232         RNA_def_property_struct_type(prop, "Region");
233         RNA_def_property_pointer_funcs(prop, "rna_Context_region_get", NULL, NULL, NULL);
234
235         prop = RNA_def_property(srna, "region_data", PROP_POINTER, PROP_NONE);
236         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
237         RNA_def_property_struct_type(prop, "RegionView3D");
238         RNA_def_property_pointer_funcs(prop, "rna_Context_region_data_get", NULL, NULL, NULL);
239
240         prop = RNA_def_property(srna, "manipulator_group", PROP_POINTER, PROP_NONE);
241         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
242         RNA_def_property_struct_type(prop, "ManipulatorGroup");
243         RNA_def_property_pointer_funcs(prop, "rna_Context_manipulator_group_get", NULL, NULL, NULL);
244
245         /* Data */
246         prop = RNA_def_property(srna, "blend_data", PROP_POINTER, PROP_NONE);
247         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
248         RNA_def_property_struct_type(prop, "BlendData");
249         RNA_def_property_pointer_funcs(prop, "rna_Context_main_get", NULL, NULL, NULL);
250
251         prop = RNA_def_property(srna, "depsgraph", PROP_POINTER, PROP_NONE);
252         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
253         RNA_def_property_struct_type(prop, "Depsgraph");
254         RNA_def_property_pointer_funcs(prop, "rna_Context_depsgraph_get", NULL, NULL, NULL);
255
256         prop = RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE);
257         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
258         RNA_def_property_struct_type(prop, "Scene");
259         RNA_def_property_pointer_funcs(prop, "rna_Context_scene_get", NULL, NULL, NULL);
260
261         prop = RNA_def_property(srna, "render_layer", PROP_POINTER, PROP_NONE);
262         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
263         RNA_def_property_struct_type(prop, "SceneLayer");
264         RNA_def_property_pointer_funcs(prop, "rna_Context_scene_layer_get", NULL, NULL, NULL);
265
266         prop = RNA_def_property(srna, "scene_collection", PROP_POINTER, PROP_NONE);
267         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
268         RNA_def_property_struct_type(prop, "SceneCollection");
269         RNA_def_property_pointer_funcs(prop, "rna_Context_scene_collection_get", NULL, NULL, NULL);
270
271         prop = RNA_def_property(srna, "layer_collection", PROP_POINTER, PROP_NONE);
272         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
273         RNA_def_property_struct_type(prop, "LayerCollection");
274         RNA_def_property_pointer_funcs(prop, "rna_Context_layer_collection_get", NULL, NULL, NULL);
275
276         prop = RNA_def_property(srna, "tool_settings", PROP_POINTER, PROP_NONE);
277         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
278         RNA_def_property_struct_type(prop, "ToolSettings");
279         RNA_def_property_pointer_funcs(prop, "rna_Context_tool_settings_get", NULL, NULL, NULL);
280
281         prop = RNA_def_property(srna, "user_preferences", PROP_POINTER, PROP_NONE);
282         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
283         RNA_def_property_struct_type(prop, "UserPreferences");
284         RNA_def_property_pointer_funcs(prop, "rna_Context_user_preferences_get", NULL, NULL, NULL);
285
286         prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
287         RNA_def_property_enum_items(prop, mode_items);
288         RNA_def_property_clear_flag(prop, PROP_EDITABLE);
289         RNA_def_property_enum_funcs(prop, "rna_Context_mode_get", NULL, NULL);
290 }
291
292 #endif
293