diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-09-09 15:32:34 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-09-09 16:17:03 +0300 |
commit | f5e0dfe59c7e748907f955f848264751ed0967f0 (patch) | |
tree | a4bf4369b1076ffd7f449061f04d2813ce715a15 /source/blender/makesdna | |
parent | e164afe9b5f98fe1ddb2ce063e1df9e9926cacfd (diff) |
DNA: initial DNA defaults support
This provides an API to access structs
with their members set to default values:
- DNA_struct_default_get(name)
- DNA_struct_default_alloc(name)
Currently this is only used for scene & view shading initialization,
eventually it can be used for RNA defaults and initializing
DNA struct members on file reading.
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r-- | source/blender/makesdna/DNA_defaults.h | 46 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_scene_defaults.h | 365 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_view3d_defaults.h | 62 | ||||
-rw-r--r-- | source/blender/makesdna/intern/CMakeLists.txt | 6 | ||||
-rw-r--r-- | source/blender/makesdna/intern/dna_defaults.c | 112 |
5 files changed, 590 insertions, 1 deletions
diff --git a/source/blender/makesdna/DNA_defaults.h b/source/blender/makesdna/DNA_defaults.h new file mode 100644 index 00000000000..5b9297ce46a --- /dev/null +++ b/source/blender/makesdna/DNA_defaults.h @@ -0,0 +1,46 @@ + +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + */ + +/** \file + * \ingroup DNA + * + * \see dna_defaults.c for details on how to use this system. + */ + +#ifndef __DNA_DEFAULTS_H__ +#define __DNA_DEFAULTS_H__ + +#include "dna_type_offsets.h" + +extern const void *DNA_default_table[SDNA_TYPE_MAX]; + +char *_DNA_struct_default_alloc_impl(const char *data_src, size_t size, const char *alloc_str); + +/** + * Wrap with macro that casts correctly. + */ +#define DNA_struct_default_get(struct_name) \ + (const struct_name *)DNA_default_table[SDNA_TYPE_FROM_STRUCT(struct_name)] + +#define DNA_struct_default_alloc(struct_name) \ + (struct_name *)_DNA_struct_default_alloc_impl( \ + DNA_default_table[SDNA_TYPE_FROM_STRUCT(struct_name)], sizeof(struct_name), __func__) + +#endif /* __DNA_DEFAULTS_H__ */ diff --git a/source/blender/makesdna/DNA_scene_defaults.h b/source/blender/makesdna/DNA_scene_defaults.h new file mode 100644 index 00000000000..c2ec290252f --- /dev/null +++ b/source/blender/makesdna/DNA_scene_defaults.h @@ -0,0 +1,365 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/** \file + * \ingroup DNA + */ + +#ifndef __DNA_SCENE_DEFAULTS_H__ +#define __DNA_SCENE_DEFAULTS_H__ + +#include "DNA_view3d_defaults.h" + +/* Struct members on own line. */ +/* clang-format off */ + +/* -------------------------------------------------------------------- */ +/** \name Scene Struct + * \{ */ + +#define _DNA_DEFAULT_ImageFormatData \ + { \ + .planes = R_IMF_PLANES_RGBA, \ + .imtype = R_IMF_IMTYPE_PNG, \ + .depth = R_IMF_CHAN_DEPTH_8, \ + .quality = 90, \ + .compress = 15, \ + } + +#define _DNA_DEFAULT_BakeData \ + { \ + .flag = R_BAKE_CLEAR, \ + .pass_filter = R_BAKE_PASS_FILTER_ALL, \ + .width = 512, \ + .height = 512, \ + .margin = 16, \ + .normal_space = R_BAKE_SPACE_TANGENT, \ + .normal_swizzle = {R_BAKE_POSX, R_BAKE_POSY, R_BAKE_POSZ}, \ + \ + .im_format = _DNA_DEFAULT_ImageFormatData, \ + } + +#define _DNA_DEFAULT_FFMpegCodecData \ + { \ + .audio_mixrate = 48000, \ + .audio_volume = 1.0f, \ + .audio_bitrate = 192, \ + .audio_channels = 2, \ + } + +#define _DNA_DEFAULT_DisplaySafeAreas \ + { \ + .title = {10.0f / 100.0f, 5.0f / 100.0f}, \ + .action = {3.5f / 100.0f, 3.5f / 100.0f}, \ + .title_center = {17.5f / 100.0f, 5.0f / 100.0f}, \ + .action_center = {15.0f / 100.0f, 5.0f / 100.0f}, \ + } + +#define _DNA_DEFAULT_RenderData \ + { \ + .mode = 0, \ + .cfra = 1, \ + .sfra = 1, \ + .efra = 250, \ + .frame_step = 1, \ + .xsch = 1920, \ + .ysch = 1080, \ + .xasp = 1, \ + .yasp = 1, \ + .tilex = 256, \ + .tiley = 256, \ + .size = 100, \ + \ + .im_format = _DNA_DEFAULT_ImageFormatData, \ + \ + .displaymode = R_OUTPUT_WINDOW, \ + .framapto = 100, \ + .images = 100, \ + .framelen = 1.0, \ + .blurfac = 0.5, \ + .frs_sec = 24, \ + .frs_sec_base = 1, \ + \ + /* OCIO_TODO: for forwards compatibility only, so if no tonecurve are used, \ + * images would look in the same way as in current blender \ + * \ + * perhaps at some point should be completely deprecated? \ + */ \ + .color_mgt_flag = R_COLOR_MANAGEMENT, \ + \ + .gauss = 1.5, \ + .dither_intensity = 1.0f, \ + \ + .bake_mode = 0, \ + .bake_filter = 16, \ + .bake_flag = R_BAKE_CLEAR, \ + .bake_samples = 256, \ + .bake_biasdist = 0.001f, \ + \ + /* BakeData */ \ + .bake = _DNA_DEFAULT_BakeData, \ + \ + .scemode = R_DOCOMP | R_DOSEQ | R_EXTENSION, \ + .stamp = R_STAMP_TIME | R_STAMP_FRAME | R_STAMP_DATE | R_STAMP_CAMERA | R_STAMP_SCENE | \ + R_STAMP_FILENAME | R_STAMP_RENDERTIME | R_STAMP_MEMORY, \ + .stamp_font_id = 12, \ + .fg_stamp = {0.8f, 0.8f, 0.8f, 1.0f}, \ + .bg_stamp = {0.0f, 0.0f, 0.0f, 0.25f}, \ + \ + .seq_prev_type = OB_SOLID, \ + .seq_rend_type = OB_SOLID, \ + .seq_flag = 0, \ + \ + .threads = 1, \ + \ + .simplify_subsurf = 6, \ + .simplify_particles = 1.0f, \ + \ + .border.xmin = 0.0f, \ + .border.ymin = 0.0f, \ + .border.xmax = 1.0f, \ + .border.ymax = 1.0f, \ + \ + .preview_start_resolution = 64, \ + \ + .line_thickness_mode = R_LINE_THICKNESS_ABSOLUTE, \ + .unit_line_thickness = 1.0f, \ + \ + .ffcodecdata = _DNA_DEFAULT_FFMpegCodecData, \ + } + +#define _DNA_DEFAULT_AudioData \ + { \ + .distance_model = 2.0f, \ + .doppler_factor = 1.0f, \ + .speed_of_sound = 343.3f, \ + .volume = 1.0f, \ + .flag = AUDIO_SYNC, \ + } + +#define _DNA_DEFAULT_SceneDisplay \ + { \ + .light_direction = {M_SQRT1_3, M_SQRT1_3, M_SQRT1_3}, \ + .shadow_shift = 0.1f, \ + .shadow_focus = 0.0f, \ + \ + .matcap_ssao_distance = 0.2f, \ + .matcap_ssao_attenuation = 1.0f, \ + .matcap_ssao_samples = 16, \ + \ + .shading = _DNA_DEFAULT_View3DShading, \ + \ + .render_aa = SCE_DISPLAY_AA_SAMPLES_8, \ + .viewport_aa = SCE_DISPLAY_AA_FXAA, \ + } + +#define _DNA_DEFAULT_PhysicsSettings \ + { \ + .gravity = {0.0f, 0.0f -9.81f}, \ + .flag = PHYS_GLOBAL_GRAVITY, \ + } + +#define _DNA_DEFAULT_SceneEEVEE \ + { \ + .gi_diffuse_bounces = 3, \ + .gi_cubemap_resolution = 512, \ + .gi_visibility_resolution = 32, \ + .gi_cubemap_draw_size = 0.3f, \ + .gi_irradiance_draw_size = 0.1f, \ + .gi_irradiance_smoothing = 0.1f, \ + .gi_filter_quality = 3.0f, \ + \ + .taa_samples = 16, \ + .taa_render_samples = 64, \ + \ + .sss_samples = 7, \ + .sss_jitter_threshold = 0.3f, \ + \ + .ssr_quality = 0.25f, \ + .ssr_max_roughness = 0.5f, \ + .ssr_thickness = 0.2f, \ + .ssr_border_fade = 0.075f, \ + .ssr_firefly_fac = 10.0f, \ + \ + .volumetric_start = 0.1f, \ + .volumetric_end = 100.0f, \ + .volumetric_tile_size = 8, \ + .volumetric_samples = 64, \ + .volumetric_sample_distribution = 0.8f, \ + .volumetric_light_clamp = 0.0f, \ + .volumetric_shadow_samples = 16, \ + \ + .gtao_distance = 0.2f, \ + .gtao_factor = 1.0f, \ + .gtao_quality = 0.25f, \ + \ + .bokeh_max_size = 100.0f, \ + .bokeh_threshold = 1.0f, \ + \ + .bloom_color = {1.0f, 1.0f, 1.0f}, \ + .bloom_threshold = 0.8f, \ + .bloom_knee = 0.5f, \ + .bloom_intensity = 0.05f, \ + .bloom_radius = 6.5f, \ + .bloom_clamp = 0.0f, \ + \ + .motion_blur_samples = 8, \ + .motion_blur_shutter = 0.5f, \ + \ + .shadow_cube_size = 512, \ + .shadow_cascade_size = 1024, \ + \ + .light_cache = NULL, \ + .light_threshold = 0.01f, \ + \ + .overscan = 3.0f, \ + \ + .flag = SCE_EEVEE_VOLUMETRIC_LIGHTS | SCE_EEVEE_GTAO_BENT_NORMALS | \ + SCE_EEVEE_GTAO_BOUNCE | SCE_EEVEE_TAA_REPROJECTION | \ + SCE_EEVEE_SSR_HALF_RESOLUTION | SCE_EEVEE_SHADOW_SOFT, \ + } + +#define _DNA_DEFAULT_Scene \ + { \ + .cursor = _DNA_DEFAULT_View3DCursor, \ + .r = _DNA_DEFAULT_RenderData, \ + .audio = _DNA_DEFAULT_AudioData, \ + \ + .display = _DNA_DEFAULT_SceneDisplay, \ + \ + .physics_settings = _DNA_DEFAULT_PhysicsSettings, \ + \ + .safe_areas = _DNA_DEFAULT_DisplaySafeAreas, \ + \ + .eevee = _DNA_DEFAULT_SceneEEVEE, \ + } + +/** \} */ + +/* -------------------------------------------------------------------- */ +/** \name ToolSettings Struct + * \{ */ + +#define _DNA_DEFAULTS_CurvePaintSettings \ + { \ + .curve_type = CU_BEZIER, \ + .flag = CURVE_PAINT_FLAG_CORNERS_DETECT, \ + .error_threshold = 8, \ + .radius_max = 1.0f, \ + .corner_angle = DEG2RADF(70.0f), \ + } + +#define _DNA_DEFAULTS_ImagePaintSettings \ + { \ + .paint.flags = PAINT_SHOW_BRUSH, \ + .normal_angle = 80, \ + .seam_bleed = 2, \ + } + +#define _DNA_DEFAULTS_ParticleBrushData \ + { \ + .strength = 0.5f, \ + .size = 50, \ + .step = 10, \ + .count = 10, \ + } + +#define _DNA_DEFAULTS_ParticleEditSettings \ + { \ + .flag = PE_KEEP_LENGTHS | PE_LOCK_FIRST | PE_DEFLECT_EMITTER | PE_AUTO_VELOCITY, \ + .emitterdist = 0.25f, \ + .totrekey = 5, \ + .totaddkey = 5, \ + .brushtype = PE_BRUSH_COMB, \ + \ + /* Scene init copies this to all other elements. */ \ + .brush = {_DNA_DEFAULTS_ParticleBrushData}, \ + \ + .draw_step = 2, \ + .fade_frames = 2, \ + .selectmode = SCE_SELECT_PATH, \ + } + +#define _DNA_DEFAULTS_GP_Sculpt_Guide \ + { \ + .spacing = 20.0f, \ + } + +#define _DNA_DEFAULTS_GP_Sculpt_Settings \ + { \ + .guide = _DNA_DEFAULTS_GP_Sculpt_Guide, \ + } + +#define _DNA_DEFAULTS_MeshStatVis \ + { \ + .overhang_axis = OB_NEGZ, \ + .overhang_min = 0, \ + .overhang_max = DEG2RADF(45.0f), \ + .thickness_max = 0.1f, \ + .thickness_samples = 1, \ + .distort_min = DEG2RADF(5.0f), \ + .distort_max = DEG2RADF(45.0f), \ + \ + .sharp_min = DEG2RADF(90.0f), \ + .sharp_max = DEG2RADF(180.0f), \ + } + +#define _DNA_DEFAULT_ToolSettings \ + { \ + .object_flag = SCE_OBJECT_MODE_LOCK, \ + .doublimit = 0.001, \ + .vgroup_weight = 1.0f, \ + .uvcalc_margin = 0.001f, \ + .uvcalc_flag = UVCALC_TRANSFORM_CORRECT, \ + .unwrapper = 1, \ + .select_thresh = 0.01f, \ + \ + .selectmode = SCE_SELECT_VERTEX, \ + .uv_selectmode = UV_SELECT_VERTEX, \ + .autokey_mode = AUTOKEY_MODE_NORMAL, \ + \ + .transform_pivot_point = V3D_AROUND_CENTER_MEDIAN, \ + .snap_mode = SCE_SNAP_MODE_INCREMENT, \ + .snap_node_mode = SCE_SNAP_MODE_GRID, \ + .snap_uv_mode = SCE_SNAP_MODE_INCREMENT, \ + .snap_transform_mode_flag = SCE_SNAP_TRANSFORM_MODE_TRANSLATE, \ + \ + .curve_paint_settings = _DNA_DEFAULTS_CurvePaintSettings, \ + \ + .statvis = _DNA_DEFAULTS_MeshStatVis, \ + \ + .proportional_size = 1.0f, \ + \ + .imapaint = _DNA_DEFAULTS_ImagePaintSettings, \ + \ + .particle = _DNA_DEFAULTS_ParticleEditSettings, \ + \ + .gp_sculpt = _DNA_DEFAULTS_GP_Sculpt_Settings, \ + \ + /* Annotations */ \ + .annotate_v3d_align = GP_PROJECT_VIEWSPACE | GP_PROJECT_CURSOR, \ + .annotate_thickness = 3, \ + \ + /* GP Stroke Placement */ \ + .gpencil_v3d_align = GP_PROJECT_VIEWSPACE, \ + .gpencil_v2d_align = GP_PROJECT_VIEWSPACE, \ + .gpencil_seq_align = GP_PROJECT_VIEWSPACE, \ + .gpencil_ima_align = GP_PROJECT_VIEWSPACE, \ + } + +/* clang-format off */ + +#endif /* __DNA_SCENE_DEFAULTS_H__ */ diff --git a/source/blender/makesdna/DNA_view3d_defaults.h b/source/blender/makesdna/DNA_view3d_defaults.h new file mode 100644 index 00000000000..2964e77a421 --- /dev/null +++ b/source/blender/makesdna/DNA_view3d_defaults.h @@ -0,0 +1,62 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/** \file + * \ingroup DNA + */ + +#ifndef __DNA_VIEW3D_DEFAULTS_H__ +#define __DNA_VIEW3D_DEFAULTS_H__ + +/* Struct members on own line. */ +/* clang-format off */ + +/* -------------------------------------------------------------------- */ +/** \name Viewport Struct + * \{ */ + +#define _DNA_DEFAULT_View3DShading \ + { \ + .type = OB_SOLID, \ + .prev_type = OB_SOLID, \ + .flag = V3D_SHADING_SPECULAR_HIGHLIGHT | V3D_SHADING_XRAY_WIREFRAME | \ + V3D_SHADING_SCENE_LIGHTS_RENDER | V3D_SHADING_SCENE_WORLD_RENDER, \ + .light = V3D_LIGHTING_STUDIO, \ + .shadow_intensity = 0.5f, \ + .xray_alpha = 0.5f, \ + .xray_alpha_wire = 0.5f, \ + .cavity_valley_factor = 1.0f, \ + .cavity_ridge_factor = 1.0f, \ + .cavity_type = V3D_SHADING_CAVITY_CURVATURE, \ + .curvature_ridge_factor = 1.0f, \ + .curvature_valley_factor = 1.0f, \ + .single_color = {0.8f, 0.8f, 0.8f}, \ + .background_color = {0.05f, 0.05f, 0.05f}, \ + .studiolight_intensity = 1.0f, \ + } + +#define _DNA_DEFAULT_View3DCursor \ + { \ + .rotation_mode = ROT_MODE_XYZ, \ + .rotation_quaternion = {1, 0, 0, 0}, \ + .rotation_axis = {0, 1, 0}, \ + } + +/** \} */ + +/* clang-format on */ + +#endif /* __DNA_VIEW3D_DEFAULTS_H__ */ diff --git a/source/blender/makesdna/intern/CMakeLists.txt b/source/blender/makesdna/intern/CMakeLists.txt index 178ef219c4d..92ca09dcbca 100644 --- a/source/blender/makesdna/intern/CMakeLists.txt +++ b/source/blender/makesdna/intern/CMakeLists.txt @@ -77,7 +77,7 @@ add_custom_command( # ----------------------------------------------------------------------------- # Build bf_dna library set(INC - + ${CMAKE_CURRENT_BINARY_DIR} ) set(INC_SYS @@ -85,6 +85,7 @@ set(INC_SYS ) set(SRC + dna_defaults.c dna_genfile.c dna_utils.c ${CMAKE_CURRENT_BINARY_DIR}/dna.c @@ -126,6 +127,9 @@ set(SRC ../../blenlib/intern/endian_switch.c ../../blenlib/intern/hash_mm2a.c ../../blenlib/intern/listbase.c + + ../DNA_scene_defaults.h + ../DNA_view3d_defaults.h ) set(LIB diff --git a/source/blender/makesdna/intern/dna_defaults.c b/source/blender/makesdna/intern/dna_defaults.c new file mode 100644 index 00000000000..327411ab17f --- /dev/null +++ b/source/blender/makesdna/intern/dna_defaults.c @@ -0,0 +1,112 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * DNA default value access. + */ + +/** \file + * \ingroup DNA + * + * This API provides direct access to DNA default structs + * to avoid duplicating values for initialization, versioning and RNA. + * This allows DNA default definitions to be defined in a single header along side the types. + * So each `DNA_{name}_types.h` can have an optional `DNA_{name}_defaults.h` file along side it. + * + * Defining the defaults is optional since it doesn't make sense for some structs to have defaults. + * + * To create these defaults there is a GDB script which can be handy to get started: + * `./source/tools/utils/gdb_struct_repr_c99.py` + * + * Magic numbers should be replaced with flags before committing. + * + * The main functions to access these are: + * - #DNA_struct_default_get + * - #DNA_struct_default_alloc + * + * These access the struct table #DNA_default_table using the struct number. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <limits.h> + +#include "MEM_guardedalloc.h" + +#include "BLI_utildefines.h" +#include "BLI_endian_switch.h" +#include "BLI_memarena.h" +#include "BLI_math.h" + +#include "DNA_defaults.h" +#include "DNA_scene_types.h" +#include "DNA_curve_types.h" + +#include "DNA_scene_defaults.h" + +const Scene DNA_DEFAULT_Scene = _DNA_DEFAULT_Scene; +const ToolSettings DNA_DEFAULT_ToolSettings = _DNA_DEFAULT_ToolSettings; + +/** + * Prevent assigning the wrong struct types since all elements in #DNA_default_table are `void *`. + */ +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +# define SDNA_TYPE_CHECKED(v, t) (&(v) + (_Generic((v), t : 0))) +#else +# define SDNA_TYPE_CHECKED(v, t) (&(v)) +#endif + +/* */ +#define SDNA_DEFAULT_DECL(struct_name) \ + [SDNA_TYPE_FROM_STRUCT(struct_name)] = SDNA_TYPE_CHECKED(DNA_DEFAULT_##struct_name, struct_name) + +#define SDNA_DEFAULT_DECL_EX(struct_name, struct_path) \ + [SDNA_TYPE_FROM_STRUCT(struct_name)] = SDNA_TYPE_CHECKED(DNA_DEFAULT_##struct_path, struct_name) + +/** Keep headers sorted. */ +const void *DNA_default_table[SDNA_TYPE_MAX] = { + /* DNA_scene_defaults.h */ + SDNA_DEFAULT_DECL(Scene), + SDNA_DEFAULT_DECL_EX(RenderData, Scene.r), + SDNA_DEFAULT_DECL_EX(ImageFormatData, Scene.r.im_format), + SDNA_DEFAULT_DECL_EX(BakeData, Scene.r.bake), + SDNA_DEFAULT_DECL_EX(FFMpegCodecData, Scene.r.ffcodecdata), + SDNA_DEFAULT_DECL_EX(DisplaySafeAreas, Scene.safe_areas), + SDNA_DEFAULT_DECL_EX(AudioData, Scene.audio), + SDNA_DEFAULT_DECL_EX(PhysicsSettings, Scene.physics_settings), + SDNA_DEFAULT_DECL_EX(SceneDisplay, Scene.display), + + SDNA_DEFAULT_DECL(ToolSettings), + SDNA_DEFAULT_DECL_EX(CurvePaintSettings, ToolSettings.curve_paint_settings), + SDNA_DEFAULT_DECL_EX(ImagePaintSettings, ToolSettings.imapaint), + SDNA_DEFAULT_DECL_EX(ParticleEditSettings, ToolSettings.particle), + SDNA_DEFAULT_DECL_EX(ParticleBrushData, ToolSettings.particle.brush[0]), + SDNA_DEFAULT_DECL_EX(MeshStatVis, ToolSettings.statvis), + SDNA_DEFAULT_DECL_EX(GP_Sculpt_Settings, ToolSettings.gp_sculpt), + SDNA_DEFAULT_DECL_EX(GP_Sculpt_Guide, ToolSettings.gp_sculpt.guide), + + /* DNA_view3d_defaults.h */ + SDNA_DEFAULT_DECL_EX(View3DShading, Scene.display.shading), + SDNA_DEFAULT_DECL_EX(View3DCursor, Scene.cursor), +}; +#undef SDNA_DEFAULT_DECL +#undef SDNA_DEFAULT_DECL_EX + +char *_DNA_struct_default_alloc_impl(const char *data_src, size_t size, const char *alloc_str) +{ + char *data_dst = MEM_mallocN(size, alloc_str); + memcpy(data_dst, data_src, size); + return data_dst; +} |