WIP: Vulkan: Workbench #107886

Closed
Jeroen Bakker wants to merge 88 commits from Jeroen-Bakker:vulkan-draw-manager-workbench into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
16 changed files with 272 additions and 166 deletions
Showing only changes of commit a52188830a - Show all commits

View File

@ -171,6 +171,11 @@ template<typename T> inline T pow(const T &x, const T &power)
return std::pow(x, power);
}
template<typename T> inline T exp(const T &x)
{
return std::exp(x);
}
template<typename T> inline T safe_acos(const T &a)
{
if (UNLIKELY(a <= T(-1))) {

View File

@ -206,6 +206,16 @@ template<typename T, int Size>
return result;
}
/* Per-element exponent. */
template<typename T, int Size> [[nodiscard]] inline VecBase<T, Size> exp(const VecBase<T, Size> &x)
{
VecBase<T, Size> result;
for (int i = 0; i < Size; i++) {
result[i] = math::exp(x[i]);
}
return result;
}
/**
* Returns \a a if it is a multiple of \a b or the next multiple or \a b after \b a .
* In other words, it is equivalent to `divide_ceil(a, b) * b`.

View File

@ -172,4 +172,13 @@ TEST(math_vector, safe_rcp)
EXPECT_NEAR(result.z, 0.25f, 1e-6f);
}
TEST(math_vector, exp)
{
const float3 a(1.0f, 2.0f, 3.0f);
const float3 result = math::exp(a);
EXPECT_NEAR(result.x, 2.718281828459045f, 1e-6f);
EXPECT_NEAR(result.y, 7.38905609893065f, 1e-6f);
EXPECT_NEAR(result.z, 20.085536923187668f, 1e-6f);
}
} // namespace blender::tests

View File

@ -76,7 +76,10 @@ typedef struct BlendFileReadWMSetupData {
/** The existing WM when filereading process is started. */
struct wmWindowManager *old_wm;
/** The startup file is being read. */
bool is_read_homefile;
/** The factory startup file is being read. */
bool is_factory_startup;
} BlendFileReadWMSetupData;
struct BlendFileReadParams {

View File

@ -976,6 +976,9 @@ static void template_id_cb(bContext *C, void *arg_litem, void *arg_event)
id->us = 0;
undo_push_label = "Delete Data-Block";
}
else {
undo_push_label = "Unlink Data-Block";
}
break;
case UI_ID_FAKE_USER:

View File

@ -220,9 +220,9 @@ void MTLStorageBuf::clear(uint32_t clear_value)
if (ctx) {
/* If all 4 bytes within clear value are equal, use the builtin fast-path for clearing. */
uint clear_byte = clear_value & 0xFF;
bool clear_value_bytes_equal = (clear_byte == (clear_value >> 8) & 0xFF) &&
(clear_byte == (clear_value >> 16) & 0xFF) &&
(clear_byte == (clear_value >> 24) & 0xFF);
bool clear_value_bytes_equal = (clear_byte == ((clear_value >> 8) & 0xFF)) &&
(clear_byte == ((clear_value >> 16) & 0xFF)) &&
(clear_byte == ((clear_value >> 24) & 0xFF));
if (clear_value_bytes_equal) {
id<MTLBlitCommandEncoder> blit_encoder =
ctx->main_command_buffer.ensure_begin_blit_encoder();

View File

@ -16,6 +16,7 @@ VKPipelineStateManager::VKPipelineStateManager()
rasterization_state = {};
rasterization_state.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO;
rasterization_state.lineWidth = 1.0f;
rasterization_state.frontFace = VK_FRONT_FACE_CLOCKWISE;
pipeline_color_blend_state = {};
pipeline_color_blend_state.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO;

View File

@ -310,6 +310,7 @@ typedef enum PropertyFlag {
**/
PROP_PATH_OUTPUT = (1 << 2),
} PropertyFlag;
ENUM_OPERATORS(PropertyFlag, PROP_NO_DEG_UPDATE)
/**
* Flags related to comparing and overriding RNA properties.
@ -354,6 +355,7 @@ typedef enum PropertyOverrideFlag {
*/
PROPOVERRIDE_NO_PROP_NAME = (1 << 11),
} PropertyOverrideFlag;
ENUM_OPERATORS(PropertyOverrideFlag, PROPOVERRIDE_NO_PROP_NAME);
/**
* Function parameters flags.

View File

@ -41,16 +41,16 @@ set(DEFSRC
rna_gpencil_legacy_modifier.c
rna_image.c
rna_key.c
rna_lattice.c
rna_lattice.cc
rna_layer.c
rna_light.c
rna_lightprobe.c
rna_linestyle.c
rna_main.c
rna_mask.c
rna_mask.cc
rna_material.c
rna_mesh.c
rna_meta.c
rna_meta.cc
rna_modifier.c
rna_movieclip.c
rna_nla.c
@ -61,7 +61,7 @@ set(DEFSRC
rna_palette.c
rna_particle.c
rna_pointcloud.c
rna_pose.c
rna_pose.cc
rna_render.c
rna_rigidbody.c
rna_rna.c
@ -106,7 +106,7 @@ set(APISRC
rna_curve_api.c
rna_fcurve_api.c
rna_image_api.c
rna_lattice_api.c
rna_lattice_api.cc
rna_main_api.c
rna_material_api.c
rna_mesh_api.c
@ -137,21 +137,42 @@ set_source_files_properties(${GENSRC} PROPERTIES GENERATED TRUE)
# CFLAGS for Generated Files
#
# less strict flags for generated source
set(GENSRC_FLAGS)
set(GENSRC_CFLAGS)
set(GENSRC_CXXFLAGS)
if(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_C_COMPILER_ID MATCHES "Clang"))
set(GENSRC_CFLAGS "-Wno-missing-prototypes")
set(GENSRC_CXXFLAGS "-Wno-missing-declarations")
endif()
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
string(APPEND GENSRC_CFLAGS " -Wno-missing-variable-declarations")
string(APPEND GENSRC_FLAGS " -Wno-missing-variable-declarations")
elseif(MSVC)
# Restore warn C4100 (unreferenced formal parameter) back to w4
remove_cc_flag(/w34100)
endif()
if(GENSRC_CFLAGS)
set_source_files_properties(${GENSRC} PROPERTIES COMPILE_FLAGS "${GENSRC_CFLAGS}")
set(GENSRC_C ${GENSRC})
list(FILTER GENSRC_C INCLUDE REGEX ".*\.c$")
set(GENSRC_CXX ${GENSRC})
list(FILTER GENSRC_CXX INCLUDE REGEX ".*\.cc$")
if(GENSRC_FLAGS)
set_source_files_properties(${GENSRC} PROPERTIES COMPILE_FLAGS "${GENSRC_FLAGS}")
endif()
if(GENSRC_CFLAGS)
set_source_files_properties(${GENSRC_C} PROPERTIES COMPILE_FLAGS "${GENSRC_CFLAGS}")
endif()
if(GENSRC_CXXFLAGS)
set_source_files_properties(${GENSRC_CXX} PROPERTIES COMPILE_FLAGS "${GENSRC_CXXFLAGS}")
endif()
unset(GENSRC_C)
unset(GENSRC_CXX)
unset(GENSRC_FLAGS)
unset(GENSRC_CFLAGS)
unset(GENSRC_CXXFLAGS)
# NOTE: Disable clang-tidy because generated files are stored outside of the source,

View File

@ -743,7 +743,7 @@ static char *rna_def_property_get_func(
case PROP_STRING: {
StringPropertyRNA *sprop = (StringPropertyRNA *)prop;
UNUSED_VARS_NDEBUG(sprop);
fprintf(f, "void %s(PointerRNA *ptr, char *value)\n", func);
fprintf(f, "RNA_EXTERN_C void %s(PointerRNA *ptr, char *value)\n", func);
fprintf(f, "{\n");
if (manualfunc) {
fprintf(f, " %s(ptr, value);\n", manualfunc);
@ -781,7 +781,7 @@ static char *rna_def_property_get_func(
break;
}
case PROP_POINTER: {
fprintf(f, "PointerRNA %s(PointerRNA *ptr)\n", func);
fprintf(f, "RNA_EXTERN_C PointerRNA %s(PointerRNA *ptr)\n", func);
fprintf(f, "{\n");
if (manualfunc) {
fprintf(f, " return %s(ptr);\n", manualfunc);
@ -831,11 +831,14 @@ static char *rna_def_property_get_func(
default:
if (prop->arraydimension) {
if (prop->flag & PROP_DYNAMIC) {
fprintf(f, "void %s(PointerRNA *ptr, %s values[])\n", func, rna_type_type(prop));
fprintf(f,
"RNA_EXTERN_C void %s(PointerRNA *ptr, %s values[])\n",
func,
rna_type_type(prop));
}
else {
fprintf(f,
"void %s(PointerRNA *ptr, %s values[%u])\n",
"RNA_EXTERN_C void %s(PointerRNA *ptr, %s values[%u])\n",
func,
rna_type_type(prop),
prop->totarraylength);
@ -931,7 +934,7 @@ static char *rna_def_property_get_func(
fprintf(f, "}\n\n");
}
else {
fprintf(f, "%s %s(PointerRNA *ptr)\n", rna_type_type(prop), func);
fprintf(f, "RNA_EXTERN_C %s %s(PointerRNA *ptr)\n", rna_type_type(prop), func);
fprintf(f, "{\n");
if (manualfunc) {
@ -1022,17 +1025,25 @@ static void rna_clamp_value_range_check(FILE *f,
{
if (prop->type == PROP_INT) {
IntPropertyRNA *iprop = (IntPropertyRNA *)prop;
fprintf(f, " {\n");
fprintf(f, "#ifdef __cplusplus\n");
fprintf(f, " using T = decltype(%s%s);\n", dnaname_prefix, dnaname);
fprintf(f, " static_assert(std::numeric_limits<T>::max() >= %d);\n", iprop->hardmax);
fprintf(f, " static_assert(std::numeric_limits<T>::min() <= %d);\n", iprop->hardmin);
fprintf(f, "#else\n");
fprintf(f,
" { BLI_STATIC_ASSERT("
" BLI_STATIC_ASSERT("
"(TYPEOF_MAX(%s%s) >= %d) && "
"(TYPEOF_MIN(%s%s) <= %d), "
"\"invalid limits\"); }\n",
"\"invalid limits\");\n",
dnaname_prefix,
dnaname,
iprop->hardmax,
dnaname_prefix,
dnaname,
iprop->hardmin);
fprintf(f, "#endif\n");
fprintf(f, " }\n");
}
}
#endif /* USE_RNA_RANGE_CHECK */
@ -1050,7 +1061,7 @@ static void rna_clamp_value(FILE *f, PropertyRNA *prop, int array)
fprintf(f, "CLAMPIS(value, ");
}
if (iprop->range) {
fprintf(f, "prop_clamp_min, prop_clamp_max);");
fprintf(f, "prop_clamp_min, prop_clamp_max);\n");
}
else {
rna_int_print(f, iprop->hardmin);
@ -1072,7 +1083,7 @@ static void rna_clamp_value(FILE *f, PropertyRNA *prop, int array)
fprintf(f, "CLAMPIS(value, ");
}
if (fprop->range) {
fprintf(f, "prop_clamp_min, prop_clamp_max);");
fprintf(f, "prop_clamp_min, prop_clamp_max);\n");
}
else {
rna_float_print(f, fprop->hardmin);
@ -1110,7 +1121,7 @@ static char *rna_def_property_search_func(FILE *f,
func = rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "search");
fprintf(f,
"void %s("
"RNA_EXTERN_C void %s("
"const bContext *C, "
"PointerRNA *ptr, "
"PropertyRNA *prop, "
@ -1151,7 +1162,7 @@ static char *rna_def_property_set_func(
switch (prop->type) {
case PROP_STRING: {
StringPropertyRNA *sprop = (StringPropertyRNA *)prop;
fprintf(f, "void %s(PointerRNA *ptr, const char *value)\n", func);
fprintf(f, "RNA_EXTERN_C void %s(PointerRNA *ptr, const char *value)\n", func);
fprintf(f, "{\n");
if (manualfunc) {
fprintf(f, " %s(ptr, value);\n", manualfunc);
@ -1166,7 +1177,8 @@ static char *rna_def_property_set_func(
f, " if (data->%s != NULL) { MEM_freeN(data->%s); }\n", dp->dnaname, dp->dnaname);
fprintf(f, " const int length = strlen(value);\n");
fprintf(f, " if (length > 0) {\n");
fprintf(f, " data->%s = MEM_mallocN(length + 1, __func__);\n", dp->dnaname);
fprintf(
f, " data->%s = (char *)MEM_mallocN(length + 1, __func__);\n", dp->dnaname);
fprintf(f, " memcpy(data->%s, value, length + 1);\n", dp->dnaname);
fprintf(f, " } else { data->%s = NULL; }\n", dp->dnaname);
}
@ -1196,7 +1208,10 @@ static char *rna_def_property_set_func(
break;
}
case PROP_POINTER: {
fprintf(f, "void %s(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)\n", func);
fprintf(
f,
"RNA_EXTERN_C void %s(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)\n",
func);
fprintf(f, "{\n");
if (manualfunc) {
fprintf(f, " %s(ptr, value, reports);\n", manualfunc);
@ -1229,7 +1244,7 @@ static char *rna_def_property_set_func(
}
}
fprintf(f, " data->%s = value.data;\n", dp->dnaname);
fprintf(f, " *(void **)&data->%s = value.data;\n", dp->dnaname);
}
fprintf(f, "}\n\n");
break;
@ -1237,11 +1252,14 @@ static char *rna_def_property_set_func(
default:
if (prop->arraydimension) {
if (prop->flag & PROP_DYNAMIC) {
fprintf(f, "void %s(PointerRNA *ptr, const %s values[])\n", func, rna_type_type(prop));
fprintf(f,
"RNA_EXTERN_C void %s(PointerRNA *ptr, const %s values[])\n",
func,
rna_type_type(prop));
}
else {
fprintf(f,
"void %s(PointerRNA *ptr, const %s values[%u])\n",
"RNA_EXTERN_C void %s(PointerRNA *ptr, const %s values[%u])\n",
func,
rna_type_type(prop),
prop->totarraylength);
@ -1353,7 +1371,7 @@ static char *rna_def_property_set_func(
fprintf(f, "}\n\n");
}
else {
fprintf(f, "void %s(PointerRNA *ptr, %s value)\n", func, rna_type_type(prop));
fprintf(f, "RNA_EXTERN_C void %s(PointerRNA *ptr, %s value)\n", func, rna_type_type(prop));
fprintf(f, "{\n");
if (manualfunc) {
@ -1439,7 +1457,7 @@ static char *rna_def_property_length_func(
func = rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "length");
fprintf(f, "int %s(PointerRNA *ptr)\n", func);
fprintf(f, "RNA_EXTERN_C int %s(PointerRNA *ptr)\n", func);
fprintf(f, "{\n");
if (manualfunc) {
fprintf(f, " return %s(ptr);\n", manualfunc);
@ -1472,7 +1490,7 @@ static char *rna_def_property_length_func(
func = rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "length");
fprintf(f, "int %s(PointerRNA *ptr)\n", func);
fprintf(f, "RNA_EXTERN_C int %s(PointerRNA *ptr)\n", func);
fprintf(f, "{\n");
if (manualfunc) {
fprintf(f, " return %s(ptr);\n", manualfunc);
@ -1521,7 +1539,7 @@ static char *rna_def_property_begin_func(
func = rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "begin");
fprintf(f, "void %s(CollectionPropertyIterator *iter, PointerRNA *ptr)\n", func);
fprintf(f, "RNA_EXTERN_C void %s(CollectionPropertyIterator *iter, PointerRNA *ptr)\n", func);
fprintf(f, "{\n");
if (!manualfunc) {
@ -1610,7 +1628,7 @@ static char *rna_def_property_lookup_int_func(FILE *f,
func = rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "lookup_int");
fprintf(f, "int %s(PointerRNA *ptr, int index, PointerRNA *r_ptr)\n", func);
fprintf(f, "RNA_EXTERN_C int %s(PointerRNA *ptr, int index, PointerRNA *r_ptr)\n", func);
fprintf(f, "{\n");
if (manualfunc) {
@ -1754,7 +1772,21 @@ static char *rna_def_property_lookup_string_func(FILE *f,
func = rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "lookup_string");
fprintf(f, "int %s(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)\n", func);
if (!manualfunc) {
/* XXX extern declaration could be avoid by including RNA_blender.h, but this has lots of
* unknown DNA types in functions, leading to conflicting function signatures.
*/
fprintf(f,
"RNA_EXTERN_C int %s_%s_length(PointerRNA *);\n",
item_name_base->identifier,
rna_safe_id(item_name_prop->identifier));
fprintf(f,
"RNA_EXTERN_C void %s_%s_get(PointerRNA *, char *);\n\n",
item_name_base->identifier,
rna_safe_id(item_name_prop->identifier));
}
fprintf(f, "RNA_EXTERN_C int %s(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)\n", func);
fprintf(f, "{\n");
if (manualfunc) {
@ -1763,18 +1795,6 @@ static char *rna_def_property_lookup_string_func(FILE *f,
return func;
}
/* XXX extern declaration could be avoid by including RNA_blender.h, but this has lots of unknown
* DNA types in functions, leading to conflicting function signatures.
*/
fprintf(f,
" extern int %s_%s_length(PointerRNA *);\n",
item_name_base->identifier,
rna_safe_id(item_name_prop->identifier));
fprintf(f,
" extern void %s_%s_get(PointerRNA *, char *);\n\n",
item_name_base->identifier,
rna_safe_id(item_name_prop->identifier));
fprintf(f, " bool found = false;\n");
fprintf(f, " CollectionPropertyIterator iter;\n");
fprintf(f, " char namebuf[%d];\n", namebuflen);
@ -1844,7 +1864,7 @@ static char *rna_def_property_next_func(FILE *f,
func = rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "next");
fprintf(f, "void %s(CollectionPropertyIterator *iter)\n", func);
fprintf(f, "RNA_EXTERN_C void %s(CollectionPropertyIterator *iter)\n", func);
fprintf(f, "{\n");
fprintf(f, " %s(iter);\n", manualfunc);
@ -1873,7 +1893,7 @@ static char *rna_def_property_end_func(FILE *f,
func = rna_alloc_function_name(srna->identifier, rna_safe_id(prop->identifier), "end");
fprintf(f, "void %s(CollectionPropertyIterator *iter)\n", func);
fprintf(f, "RNA_EXTERN_C void %s(CollectionPropertyIterator *iter)\n", func);
fprintf(f, "{\n");
if (manualfunc) {
fprintf(f, " %s(iter);\n", manualfunc);
@ -2127,7 +2147,7 @@ static void rna_def_property_funcs_header(FILE *f, StructRNA *srna, PropertyDefR
fprintf(f, "bool %sget(PointerRNA *ptr);\n", func);
fprintf(f, "void %sset(PointerRNA *ptr, bool value);\n", func);
}
else if (prop->arraydimension && prop->totarraylength) {
else if ((prop->flag & PROP_DYNAMIC) == 0 && prop->arraydimension && prop->totarraylength) {
fprintf(f, "void %sget(PointerRNA *ptr, bool values[%u]);\n", func, prop->totarraylength);
fprintf(f,
"void %sset(PointerRNA *ptr, const bool values[%u]);\n",
@ -2145,7 +2165,7 @@ static void rna_def_property_funcs_header(FILE *f, StructRNA *srna, PropertyDefR
fprintf(f, "int %sget(PointerRNA *ptr);\n", func);
fprintf(f, "void %sset(PointerRNA *ptr, int value);\n", func);
}
else if (prop->arraydimension && prop->totarraylength) {
else if ((prop->flag & PROP_DYNAMIC) == 0 && prop->arraydimension && prop->totarraylength) {
fprintf(f, "void %sget(PointerRNA *ptr, int values[%u]);\n", func, prop->totarraylength);
fprintf(
f, "void %sset(PointerRNA *ptr, const int values[%u]);\n", func, prop->totarraylength);
@ -2161,7 +2181,7 @@ static void rna_def_property_funcs_header(FILE *f, StructRNA *srna, PropertyDefR
fprintf(f, "float %sget(PointerRNA *ptr);\n", func);
fprintf(f, "void %sset(PointerRNA *ptr, float value);\n", func);
}
else if (prop->arraydimension && prop->totarraylength) {
else if ((prop->flag & PROP_DYNAMIC) == 0 && prop->arraydimension && prop->totarraylength) {
fprintf(f, "void %sget(PointerRNA *ptr, float values[%u]);\n", func, prop->totarraylength);
fprintf(f,
"void %sset(PointerRNA *ptr, const float values[%u]);\n",
@ -2846,7 +2866,7 @@ static void rna_def_property_wrapper_funcs(FILE *f, StructDefRNA *dsrna, Propert
char funcname[2048];
rna_construct_wrapper_function_name(
funcname, sizeof(funcname), dsrna->srna->identifier, dp->prop->identifier, "get_length");
fprintf(f, "int %s(PointerRNA *ptr, int *arraylen)\n", funcname);
fprintf(f, "RNA_EXTERN_C int %s(PointerRNA *ptr, int *arraylen)\n", funcname);
fprintf(f, "{\n");
fprintf(f, "\treturn %s(ptr, arraylen);\n", rna_function_string(dp->prop->getlength));
fprintf(f, "}\n\n");
@ -2869,6 +2889,7 @@ static void rna_def_function_wrapper_funcs(FILE *f, StructDefRNA *dsrna, Functio
rna_construct_wrapper_function_name(
funcname, sizeof(funcname), srna->identifier, func->identifier, "func");
fprintf(f, "RNA_EXTERN_C ");
rna_generate_static_parameter_prototypes(f, srna, dfunc, funcname, 0);
fprintf(f, "\n{\n");
@ -2946,9 +2967,10 @@ static void rna_def_function_funcs(FILE *f, StructDefRNA *dsrna, FunctionDefRNA
funcname = rna_alloc_function_name(srna->identifier, func->identifier, "call");
/* function definition */
fprintf(f,
"void %s(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)",
funcname);
fprintf(
f,
"static void %s(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)",
funcname);
fprintf(f, "\n{\n");
/* variable definitions */
@ -3020,7 +3042,7 @@ static void rna_def_function_funcs(FILE *f, StructDefRNA *dsrna, FunctionDefRNA
rna_type_struct(dparm->prop),
rna_parameter_type_name(dparm->prop),
ptrstr,
dparm->prop->identifier);
rna_safe_id(dparm->prop->identifier));
}
if (has_data) {
@ -3101,14 +3123,14 @@ static void rna_def_function_funcs(FILE *f, StructDefRNA *dsrna, FunctionDefRNA
if (flag & PROP_DYNAMIC) {
fprintf(f,
"\t%s_len = %s((ParameterDynAlloc *)_data)->array_tot;\n",
dparm->prop->identifier,
rna_safe_id(dparm->prop->identifier),
pout ? "(int *)&" : "(int)");
data_str = "(&(((ParameterDynAlloc *)_data)->array))";
}
else {
data_str = "_data";
}
fprintf(f, "\t%s = ", dparm->prop->identifier);
fprintf(f, "\t%s = ", rna_safe_id(dparm->prop->identifier));
if (!pout) {
fprintf(f, "%s", valstr);
@ -3193,10 +3215,13 @@ static void rna_def_function_funcs(FILE *f, StructDefRNA *dsrna, FunctionDefRNA
first = 0;
if (dparm->prop->flag & PROP_DYNAMIC) {
fprintf(f, "%s_len, %s", dparm->prop->identifier, dparm->prop->identifier);
fprintf(f,
"%s_len, %s",
rna_safe_id(dparm->prop->identifier),
rna_safe_id(dparm->prop->identifier));
}
else {
fprintf(f, "%s", dparm->prop->identifier);
fprintf(f, "%s", rna_safe_id(dparm->prop->identifier));
}
}
@ -3495,7 +3520,7 @@ static void rna_generate_internal_property_prototypes(BlenderRNA *UNUSED(brna),
for (prop = base->cont.properties.first; prop; prop = prop->next) {
fprintf(f,
"%s%s rna_%s_%s;\n",
"extern ",
"RNA_EXTERN_C_OR_EXTERN ",
rna_property_structname(prop->type),
base->identifier,
prop->identifier);
@ -3509,7 +3534,7 @@ static void rna_generate_internal_property_prototypes(BlenderRNA *UNUSED(brna),
for (prop = srna->cont.properties.first; prop; prop = prop->next) {
fprintf(f,
"extern %s rna_%s_%s;\n",
"RNA_EXTERN_C %s rna_%s_%s;\n",
rna_property_structname(prop->type),
srna->identifier,
prop->identifier);
@ -4145,7 +4170,7 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr
rna_function_string(iprop->getarray_ex),
rna_function_string(iprop->setarray_ex),
rna_function_string(iprop->range_ex));
rna_int_print(f, iprop->ui_scale_type);
fprintf(f, "%s", rna_ui_scale_type_string(iprop->ui_scale_type));
fprintf(f, ", ");
rna_int_print(f, iprop->softmin);
fprintf(f, ", ");
@ -4207,7 +4232,7 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr
case PROP_STRING: {
StringPropertyRNA *sprop = (StringPropertyRNA *)prop;
fprintf(f,
"\t%s, %s, %s, %s, %s, %s, %s, %d, %d, ",
"\t%s, %s, %s, %s, %s, %s, %s, (eStringPropertySearchFlag)%d, %d, ",
rna_function_string(sprop->get),
rna_function_string(sprop->length),
rna_function_string(sprop->set),
@ -4530,14 +4555,14 @@ static RNAProcessItem PROCESS_ITEMS[] = {
{"rna_image.c", "rna_image_api.c", RNA_def_image},
{"rna_key.c", NULL, RNA_def_key},
{"rna_light.c", NULL, RNA_def_light},
{"rna_lattice.c", "rna_lattice_api.c", RNA_def_lattice},
{"rna_lattice.cc", "rna_lattice_api.cc", RNA_def_lattice},
{"rna_layer.c", NULL, RNA_def_view_layer},
{"rna_linestyle.c", NULL, RNA_def_linestyle},
{"rna_main.c", "rna_main_api.c", RNA_def_main},
{"rna_fluid.c", NULL, RNA_def_fluid},
{"rna_material.c", "rna_material_api.c", RNA_def_material},
{"rna_mesh.c", "rna_mesh_api.c", RNA_def_mesh},
{"rna_meta.c", "rna_meta_api.c", RNA_def_meta},
{"rna_meta.cc", "rna_meta_api.c", RNA_def_meta},
{"rna_modifier.c", NULL, RNA_def_modifier},
{"rna_gpencil_legacy_modifier.c", NULL, RNA_def_greasepencil_modifier},
{"rna_shader_fx.c", NULL, RNA_def_shader_fx},
@ -4550,7 +4575,7 @@ static RNAProcessItem PROCESS_ITEMS[] = {
{"rna_palette.c", NULL, RNA_def_palette},
{"rna_particle.c", NULL, RNA_def_particle},
{"rna_pointcloud.c", NULL, RNA_def_pointcloud},
{"rna_pose.c", "rna_pose_api.c", RNA_def_pose},
{"rna_pose.cc", "rna_pose_api.c", RNA_def_pose},
{"rna_curveprofile.c", NULL, RNA_def_profile},
{"rna_lightprobe.c", NULL, RNA_def_lightprobe},
{"rna_render.c", NULL, RNA_def_render},
@ -4578,7 +4603,7 @@ static RNAProcessItem PROCESS_ITEMS[] = {
{"rna_world.c", NULL, RNA_def_world},
{"rna_movieclip.c", NULL, RNA_def_movieclip},
{"rna_tracking.c", NULL, RNA_def_tracking},
{"rna_mask.c", NULL, RNA_def_mask},
{"rna_mask.cc", NULL, RNA_def_mask},
{"rna_xr.c", NULL, RNA_def_xr},
{NULL, NULL},
};
@ -4629,6 +4654,13 @@ static void rna_generate(BlenderRNA *brna, FILE *f, const char *filename, const
fprintf(f, "#include \"%s\"\n", api_filename);
}
fprintf(f, "\n");
fprintf(f, "#ifdef __cplusplus\n");
fprintf(f, "# define RNA_EXTERN_C extern \"C\"\n");
fprintf(f, "# define RNA_EXTERN_C_OR_EXTERN extern \"C\"\n");
fprintf(f, "#else\n");
fprintf(f, "# define RNA_EXTERN_C\n");
fprintf(f, "# define RNA_EXTERN_C_OR_EXTERN extern\n");
fprintf(f, "#endif\n");
/* we want the included C files to have warnings enabled but for the generated code
* ignore unused-parameter warnings which are hard to prevent */
@ -5354,7 +5386,9 @@ static int rna_preprocess(const char *outfile, const char *public_header_outfile
fprintf(file,
"/* Automatically generated function declarations for the Data API.\n"
" * Do not edit manually, changes will be overwritten. */\n\n");
fprintf(file, "#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n");
rna_generate_struct_rna_prototypes(brna, file);
fprintf(file, "#ifdef __cplusplus\n}\n#endif\n");
fclose(file);
status = (DefRNA.error != 0);
}
@ -5363,8 +5397,14 @@ static int rna_preprocess(const char *outfile, const char *public_header_outfile
for (i = 0; PROCESS_ITEMS[i].filename; i++) {
strcpy(deffile, outfile);
strcat(deffile, PROCESS_ITEMS[i].filename);
deffile[strlen(deffile) - 2] = '\0';
strcat(deffile, "_gen.c" TMP_EXT);
if (deffile[strlen(deffile) - 3] == '.') {
deffile[strlen(deffile) - 3] = '\0';
strcat(deffile, "_gen.cc" TMP_EXT);
}
else {
deffile[strlen(deffile) - 2] = '\0';
strcat(deffile, "_gen.c" TMP_EXT);
}
if (status) {
make_bad_file(deffile, __LINE__);

View File

@ -82,7 +82,7 @@ static void rna_Lattice_points_begin(CollectionPropertyIterator *iter, PointerRN
}
}
static void rna_Lattice_update_data(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
static void rna_Lattice_update_data(Main * /*bmain*/, Scene * /*scene*/, PointerRNA *ptr)
{
ID *id = ptr->owner_id;
@ -94,9 +94,7 @@ static void rna_Lattice_update_data(Main *UNUSED(bmain), Scene *UNUSED(scene), P
* we could split this up differently (one update call per property)
* but for now that's overkill
*/
static void rna_Lattice_update_data_editlatt(Main *UNUSED(bmain),
Scene *UNUSED(scene),
PointerRNA *ptr)
static void rna_Lattice_update_data_editlatt(Main * /*bmain*/, Scene * /*scene*/, PointerRNA *ptr)
{
ID *id = ptr->owner_id;
Lattice *lt = (Lattice *)ptr->owner_id;
@ -126,7 +124,8 @@ static void rna_Lattice_update_size(Main *bmain, Scene *scene, PointerRNA *ptr)
neww = (lt->opntsw > 0) ? lt->opntsw : lt->pntsw;
/* #BKE_lattice_resize needs an object, any object will have the same result */
for (ob = bmain->objects.first; ob; ob = ob->id.next) {
for (ob = static_cast<Object *>(bmain->objects.first); ob;
ob = static_cast<Object *>(ob->id.next)) {
if (ob->data == lt) {
BKE_lattice_resize(lt, newu, newv, neww, ob);
if (lt->editlatt) {
@ -149,7 +148,7 @@ static void rna_Lattice_update_size(Main *bmain, Scene *scene, PointerRNA *ptr)
static void rna_Lattice_use_outside_set(PointerRNA *ptr, bool value)
{
Lattice *lt = ptr->data;
Lattice *lt = static_cast<Lattice *>(ptr->data);
if (value) {
lt->flag |= LT_OUTSIDE;
@ -172,11 +171,11 @@ static void rna_Lattice_use_outside_set(PointerRNA *ptr, bool value)
}
}
static int rna_Lattice_size_editable(PointerRNA *ptr, const char **UNUSED(r_info))
static int rna_Lattice_size_editable(PointerRNA *ptr, const char ** /*r_info*/)
{
Lattice *lt = (Lattice *)ptr->data;
return (lt->key == NULL) ? PROP_EDITABLE : 0;
return (lt->key == NULL) ? int(PROP_EDITABLE) : 0;
}
static void rna_Lattice_points_u_set(PointerRNA *ptr, int value)
@ -202,7 +201,7 @@ static void rna_Lattice_points_w_set(PointerRNA *ptr, int value)
static void rna_Lattice_vg_name_set(PointerRNA *ptr, const char *value)
{
Lattice *lt = ptr->data;
Lattice *lt = static_cast<Lattice *>(ptr->data);
STRNCPY(lt->vgroup, value);
if (lt->editlatt) {

View File

@ -40,7 +40,7 @@ void RNA_api_lattice(StructRNA *srna)
func = RNA_def_function(srna, "transform", "rna_Lattice_transform");
RNA_def_function_ui_description(func, "Transform lattice by a matrix");
parm = RNA_def_float_matrix(func, "matrix", 4, 4, NULL, 0.0f, 0.0f, "", "Matrix", 0.0f, 0.0f);
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_REQUIRED);
RNA_def_boolean(func, "shape_keys", 0, "", "Transform Shape Keys");
RNA_def_function(srna, "update_gpu_tag", "rna_Lattice_update_gpu_tag");

View File

@ -45,7 +45,7 @@
# include "WM_api.h"
static void rna_Mask_update_data(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
static void rna_Mask_update_data(Main * /*bmain*/, Scene * /*scene*/, PointerRNA *ptr)
{
Mask *mask = (Mask *)ptr->owner_id;
@ -55,7 +55,7 @@ static void rna_Mask_update_data(Main *UNUSED(bmain), Scene *UNUSED(scene), Poin
static void rna_Mask_update_parent(Main *bmain, Scene *scene, PointerRNA *ptr)
{
MaskParent *parent = ptr->data;
MaskParent *parent = static_cast<MaskParent *>(ptr->data);
if (parent->id) {
if (GS(parent->id->name) == ID_MC) {
@ -108,11 +108,11 @@ static void rna_Mask_update_parent(Main *bmain, Scene *scene, PointerRNA *ptr)
/* NOTE: this function exists only to avoid id reference-counting. */
static void rna_MaskParent_id_set(PointerRNA *ptr,
PointerRNA value,
struct ReportList *UNUSED(reports))
struct ReportList * /*reports*/)
{
MaskParent *mpar = (MaskParent *)ptr->data;
mpar->id = value.data;
mpar->id = static_cast<ID *>(value.data);
}
static StructRNA *rna_MaskParent_id_typef(PointerRNA *ptr)
@ -186,7 +186,7 @@ static PointerRNA rna_Mask_layer_active_get(PointerRNA *ptr)
static void rna_Mask_layer_active_set(PointerRNA *ptr,
PointerRNA value,
struct ReportList *UNUSED(reports))
struct ReportList * /*reports*/)
{
Mask *mask = (Mask *)ptr->owner_id;
MaskLayer *masklay = (MaskLayer *)value.data;
@ -223,7 +223,7 @@ static PointerRNA rna_MaskLayer_active_spline_get(PointerRNA *ptr)
static void rna_MaskLayer_active_spline_set(PointerRNA *ptr,
PointerRNA value,
struct ReportList *UNUSED(reports))
struct ReportList * /*reports*/)
{
MaskLayer *masklay = (MaskLayer *)ptr->data;
MaskSpline *spline = (MaskSpline *)value.data;
@ -246,7 +246,7 @@ static PointerRNA rna_MaskLayer_active_spline_point_get(PointerRNA *ptr)
static void rna_MaskLayer_active_spline_point_set(PointerRNA *ptr,
PointerRNA value,
struct ReportList *UNUSED(reports))
struct ReportList * /*reports*/)
{
MaskLayer *masklay = (MaskLayer *)ptr->data;
MaskSpline *spline;
@ -254,7 +254,7 @@ static void rna_MaskLayer_active_spline_point_set(PointerRNA *ptr,
masklay->act_point = NULL;
for (spline = masklay->splines.first; spline; spline = spline->next) {
for (spline = static_cast<MaskSpline *>(masklay->splines.first); spline; spline = spline->next) {
if (point >= spline->points && point < spline->points + spline->tot_point) {
masklay->act_point = point;
@ -316,9 +316,12 @@ static int rna_MaskSplinePoint_handle_type_get(PointerRNA *ptr)
static MaskSpline *mask_spline_from_point(Mask *mask, MaskSplinePoint *point)
{
MaskLayer *mask_layer;
for (mask_layer = mask->masklayers.first; mask_layer; mask_layer = mask_layer->next) {
for (mask_layer = static_cast<MaskLayer *>(mask->masklayers.first); mask_layer;
mask_layer = mask_layer->next)
{
MaskSpline *spline;
for (spline = mask_layer->splines.first; spline; spline = spline->next) {
for (spline = static_cast<MaskSpline *>(mask_layer->splines.first); spline;
spline = spline->next) {
if (point >= spline->points && point < spline->points + spline->tot_point) {
return spline;
}
@ -399,7 +402,7 @@ static MaskLayer *rna_Mask_layers_new(Mask *mask, const char *name)
static void rna_Mask_layers_remove(Mask *mask, ReportList *reports, PointerRNA *masklay_ptr)
{
MaskLayer *masklay = masklay_ptr->data;
MaskLayer *masklay = static_cast<MaskLayer *>(masklay_ptr->data);
if (BLI_findindex(&mask->masklayers, masklay) == -1) {
BKE_reportf(reports,
RPT_ERROR,
@ -440,7 +443,7 @@ static void rna_MaskLayer_spline_remove(ID *id,
PointerRNA *spline_ptr)
{
Mask *mask = (Mask *)id;
MaskSpline *spline = spline_ptr->data;
MaskSpline *spline = static_cast<MaskSpline *>(spline_ptr->data);
if (BKE_mask_spline_remove(mask_layer, spline) == false) {
BKE_reportf(
@ -487,7 +490,7 @@ static void rna_MaskSpline_points_add(ID *id, MaskSpline *spline, int count)
return;
}
for (layer = mask->masklayers.first; layer; layer = layer->next) {
for (layer = static_cast<MaskLayer *>(mask->masklayers.first); layer; layer = layer->next) {
if (BLI_findindex(&layer->splines, spline) != -1) {
break;
}
@ -503,8 +506,8 @@ static void rna_MaskSpline_points_add(ID *id, MaskSpline *spline, int count)
active_point_index = layer->act_point - spline->points;
}
spline->points = MEM_recallocN(spline->points,
sizeof(MaskSplinePoint) * (spline->tot_point + count));
spline->points = static_cast<MaskSplinePoint *>(
MEM_recallocN(spline->points, sizeof(MaskSplinePoint) * (spline->tot_point + count)));
spline->tot_point += count;
if (active_point_index >= 0) {
@ -534,13 +537,13 @@ static void rna_MaskSpline_point_remove(ID *id,
PointerRNA *point_ptr)
{
Mask *mask = (Mask *)id;
MaskSplinePoint *point = point_ptr->data;
MaskSplinePoint *point = static_cast<MaskSplinePoint *>(point_ptr->data);
MaskSplinePoint *new_point_array;
MaskLayer *layer;
int active_point_index = -1;
int point_index;
for (layer = mask->masklayers.first; layer; layer = layer->next) {
for (layer = static_cast<MaskLayer *>(mask->masklayers.first); layer; layer = layer->next) {
if (BLI_findindex(&layer->splines, spline) != -1) {
break;
}
@ -563,8 +566,8 @@ static void rna_MaskSpline_point_remove(ID *id,
point_index = point - spline->points;
new_point_array = MEM_mallocN(sizeof(MaskSplinePoint) * (spline->tot_point - 1),
"remove mask point");
new_point_array = static_cast<MaskSplinePoint *>(
MEM_mallocN(sizeof(MaskSplinePoint) * (spline->tot_point - 1), "remove mask point"));
memcpy(new_point_array, spline->points, sizeof(MaskSplinePoint) * point_index);
memcpy(new_point_array + point_index,
@ -809,7 +812,7 @@ static void rna_def_mask_splines(BlenderRNA *brna)
RNA_def_function_flag(func, FUNC_USE_REPORTS);
parm = RNA_def_pointer(func, "spline", "MaskSpline", "", "The spline to remove");
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, ParameterFlag(0));
/* active spline */
prop = RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
@ -847,7 +850,7 @@ static void rna_def_maskSplinePoints(BlenderRNA *brna)
RNA_def_function_ui_description(func, "Add a number of point to this spline");
parm = RNA_def_int(
func, "count", 1, 0, INT_MAX, "Number", "Number of points to add to the spline", 0, INT_MAX);
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_REQUIRED);
/* Remove the point */
func = RNA_def_function(srna, "remove", "rna_MaskSpline_point_remove");
@ -856,7 +859,7 @@ static void rna_def_maskSplinePoints(BlenderRNA *brna)
RNA_def_function_flag(func, FUNC_USE_REPORTS);
parm = RNA_def_pointer(func, "point", "MaskSplinePoint", "", "The point to remove");
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, ParameterFlag(0));
}
static void rna_def_maskSpline(BlenderRNA *brna)
@ -1071,7 +1074,7 @@ static void rna_def_masklayers(BlenderRNA *brna, PropertyRNA *cprop)
RNA_def_function_ui_description(func, "Remove layer from this mask");
parm = RNA_def_pointer(func, "layer", "MaskLayer", "", "Shape to be removed");
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, ParameterFlag(0));
/* clear all layers */
func = RNA_def_function(srna, "clear", "rna_Mask_layers_clear");

View File

@ -37,7 +37,7 @@
# include "WM_api.h"
# include "WM_types.h"
static int rna_Meta_texspace_editable(PointerRNA *ptr, const char **UNUSED(r_info))
static int rna_Meta_texspace_editable(PointerRNA *ptr, const char ** /*r_info*/)
{
MetaBall *mb = (MetaBall *)ptr->data;
return (mb->texspace_flag & MB_TEXSPACE_FLAG_AUTO) ? 0 : PROP_EDITABLE;
@ -75,7 +75,7 @@ static void rna_Meta_texspace_size_set(PointerRNA *ptr, const float *values)
copy_v3_v3(mb->texspace_size, values);
}
static void rna_MetaBall_redraw_data(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
static void rna_MetaBall_redraw_data(Main * /*bmain*/, Scene * /*scene*/, PointerRNA *ptr)
{
ID *id = ptr->owner_id;
@ -83,7 +83,7 @@ static void rna_MetaBall_redraw_data(Main *UNUSED(bmain), Scene *UNUSED(scene),
WM_main_add_notifier(NC_GEOM | ND_DATA, id);
}
static void rna_MetaBall_update_data(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
static void rna_MetaBall_update_data(Main *bmain, Scene * /*scene*/, PointerRNA *ptr)
{
MetaBall *mb = (MetaBall *)ptr->owner_id;
@ -101,7 +101,7 @@ static void rna_MetaBall_update_data(Main *bmain, Scene *UNUSED(scene), PointerR
static void rna_MetaBall_update_rotation(Main *bmain, Scene *scene, PointerRNA *ptr)
{
MetaElem *ml = ptr->data;
MetaElem *ml = static_cast<MetaElem *>(ptr->data);
normalize_qt(ml->quat);
rna_MetaBall_update_data(bmain, scene, ptr);
}
@ -121,7 +121,7 @@ static MetaElem *rna_MetaBall_elements_new(MetaBall *mb, int type)
static void rna_MetaBall_elements_remove(MetaBall *mb, ReportList *reports, PointerRNA *ml_ptr)
{
MetaElem *ml = ml_ptr->data;
MetaElem *ml = static_cast<MetaElem *>(ml_ptr->data);
if (BLI_remlink_safe(&mb->elems, ml) == false) {
BKE_reportf(
@ -159,7 +159,7 @@ static bool rna_Meta_is_editmode_get(PointerRNA *ptr)
static char *rna_MetaElement_path(const PointerRNA *ptr)
{
const MetaBall *mb = (MetaBall *)ptr->owner_id;
const MetaElem *ml = ptr->data;
const MetaElem *ml = static_cast<MetaElem *>(ptr->data);
int index = -1;
if (mb->editelems) {
@ -294,7 +294,7 @@ static void rna_def_metaball_elements(BlenderRNA *brna, PropertyRNA *cprop)
RNA_def_function_flag(func, FUNC_USE_REPORTS);
parm = RNA_def_pointer(func, "element", "MetaElement", "", "The element to remove");
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, ParameterFlag(0));
func = RNA_def_function(srna, "clear", "rna_MetaBall_elements_clear");
RNA_def_function_ui_description(func, "Remove all elements from the metaball");

View File

@ -83,7 +83,7 @@ const EnumPropertyItem rna_enum_color_sets_items[] = {
# include "RNA_access.h"
static void rna_Pose_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
static void rna_Pose_update(Main * /*bmain*/, Scene * /*scene*/, PointerRNA *ptr)
{
/* XXX when to use this? ob->pose->flag |= (POSE_LOCKED|POSE_DO_UNLOCK); */
@ -91,7 +91,7 @@ static void rna_Pose_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRN
WM_main_add_notifier(NC_OBJECT | ND_POSE, ptr->owner_id);
}
static void rna_Pose_dependency_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
static void rna_Pose_dependency_update(Main *bmain, Scene * /*scene*/, PointerRNA *ptr)
{
DEG_relations_tag_update(bmain);
@ -99,7 +99,7 @@ static void rna_Pose_dependency_update(Main *bmain, Scene *UNUSED(scene), Pointe
WM_main_add_notifier(NC_OBJECT | ND_POSE, ptr->owner_id);
}
static void rna_Pose_IK_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
static void rna_Pose_IK_update(Main * /*bmain*/, Scene * /*scene*/, PointerRNA *ptr)
{
/* XXX when to use this? ob->pose->flag |= (POSE_LOCKED|POSE_DO_UNLOCK); */
Object *ob = (Object *)ptr->owner_id;
@ -110,14 +110,14 @@ static void rna_Pose_IK_update(Main *UNUSED(bmain), Scene *UNUSED(scene), Pointe
BIK_clear_data(ob->pose);
}
static char *rna_Pose_path(const PointerRNA *UNUSED(ptr))
static char *rna_Pose_path(const PointerRNA * /*ptr*/)
{
return BLI_strdup("pose");
}
static char *rna_PoseBone_path(const PointerRNA *ptr)
{
const bPoseChannel *pchan = ptr->data;
const bPoseChannel *pchan = static_cast<const bPoseChannel *>(ptr->data);
char name_esc[sizeof(pchan->name) * 2];
BLI_str_escape(name_esc, pchan->name, sizeof(name_esc));
@ -153,7 +153,7 @@ static void rna_bone_group_remove(ID *id, bPose *pose, ReportList *reports, Poin
return;
}
bActionGroup *grp = grp_ptr->data;
bActionGroup *grp = static_cast<bActionGroup *>(grp_ptr->data);
const int grp_idx = BLI_findindex(&pose->agroups, grp);
if (grp_idx == -1) {
@ -174,7 +174,7 @@ void rna_ActionGroup_colorset_set(PointerRNA *ptr, int value)
return;
}
bActionGroup *grp = ptr->data;
bActionGroup *grp = static_cast<bActionGroup *>(ptr->data);
/* ensure only valid values get set */
if ((value >= -1) && (value < 21)) {
@ -187,7 +187,7 @@ void rna_ActionGroup_colorset_set(PointerRNA *ptr, int value)
bool rna_ActionGroup_is_custom_colorset_get(PointerRNA *ptr)
{
bActionGroup *grp = ptr->data;
bActionGroup *grp = static_cast<bActionGroup *>(ptr->data);
return (grp->customCol < 0);
}
@ -199,7 +199,7 @@ static void rna_BoneGroup_name_set(PointerRNA *ptr, const char *value)
return;
}
bActionGroup *agrp = ptr->data;
bActionGroup *agrp = static_cast<bActionGroup *>(ptr->data);
/* copy the new name into the name slot */
STRNCPY_UTF8(agrp->name, value);
@ -214,7 +214,7 @@ static void rna_BoneGroup_name_set(PointerRNA *ptr, const char *value)
static IDProperty **rna_PoseBone_idprops(PointerRNA *ptr)
{
bPoseChannel *pchan = ptr->data;
bPoseChannel *pchan = static_cast<bPoseChannel *>(ptr->data);
return &pchan->prop;
}
@ -234,10 +234,10 @@ static void rna_Pose_ik_solver_set(struct PointerRNA *ptr, int value)
}
}
static void rna_Pose_ik_solver_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
static void rna_Pose_ik_solver_update(Main *bmain, Scene * /*scene*/, PointerRNA *ptr)
{
Object *ob = (Object *)ptr->owner_id;
bPose *pose = ptr->data;
bPose *pose = static_cast<bPose *>(ptr->data);
BKE_pose_tag_recalc(bmain, pose); /* checks & sorts pose channels */
DEG_relations_tag_update(bmain);
@ -252,7 +252,7 @@ static void rna_Pose_ik_solver_update(Main *bmain, Scene *UNUSED(scene), Pointer
/* rotation - axis-angle */
static void rna_PoseChannel_rotation_axis_angle_get(PointerRNA *ptr, float *value)
{
bPoseChannel *pchan = ptr->data;
bPoseChannel *pchan = static_cast<bPoseChannel *>(ptr->data);
/* for now, assume that rotation mode is axis-angle */
value[0] = pchan->rotAngle;
@ -262,7 +262,7 @@ static void rna_PoseChannel_rotation_axis_angle_get(PointerRNA *ptr, float *valu
/* rotation - axis-angle */
static void rna_PoseChannel_rotation_axis_angle_set(PointerRNA *ptr, const float *value)
{
bPoseChannel *pchan = ptr->data;
bPoseChannel *pchan = static_cast<bPoseChannel *>(ptr->data);
/* for now, assume that rotation mode is axis-angle */
pchan->rotAngle = value[0];
@ -273,7 +273,7 @@ static void rna_PoseChannel_rotation_axis_angle_set(PointerRNA *ptr, const float
static void rna_PoseChannel_rotation_mode_set(PointerRNA *ptr, int value)
{
bPoseChannel *pchan = ptr->data;
bPoseChannel *pchan = static_cast<bPoseChannel *>(ptr->data);
/* use API Method for conversions... */
BKE_rotMode_change_values(
@ -285,7 +285,7 @@ static void rna_PoseChannel_rotation_mode_set(PointerRNA *ptr, int value)
static float rna_PoseChannel_length_get(PointerRNA *ptr)
{
bPoseChannel *pchan = ptr->data;
bPoseChannel *pchan = static_cast<bPoseChannel *>(ptr->data);
return len_v3v3(pchan->pose_head, pchan->pose_tail);
}
@ -300,12 +300,12 @@ static void rna_PoseChannel_name_set(PointerRNA *ptr, const char *value)
STRNCPY(oldname, pchan->name);
BLI_assert(BKE_id_is_in_global_main(&ob->id));
BLI_assert(BKE_id_is_in_global_main(ob->data));
ED_armature_bone_rename(G_MAIN, ob->data, oldname, newname);
BLI_assert(BKE_id_is_in_global_main(static_cast<ID *>(ob->data)));
ED_armature_bone_rename(G_MAIN, static_cast<bArmature *>(ob->data), oldname, newname);
}
/* See rna_Bone_update_renamed() */
static void rna_PoseChannel_name_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
static void rna_PoseChannel_name_update(Main * /*bmain*/, Scene * /*scene*/, PointerRNA *ptr)
{
ID *id = ptr->owner_id;
@ -323,7 +323,7 @@ static PointerRNA rna_PoseChannel_bone_get(PointerRNA *ptr)
PointerRNA tmp_ptr = *ptr;
/* Replace the id_data pointer with the Armature ID. */
tmp_ptr.owner_id = ob->data;
tmp_ptr.owner_id = static_cast<ID *>(ob->data);
return rna_pointer_inherit_refine(&tmp_ptr, &RNA_Bone, pchan->bone);
}
@ -366,10 +366,10 @@ static StructRNA *rna_Pose_ikparam_typef(PointerRNA *ptr)
}
}
static void rna_Itasc_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
static void rna_Itasc_update(Main * /*bmain*/, Scene * /*scene*/, PointerRNA *ptr)
{
Object *ob = (Object *)ptr->owner_id;
bItasc *itasc = ptr->data;
bItasc *itasc = static_cast<bItasc *>(ptr->data);
/* verify values */
if (itasc->precision < 0.0001f) {
@ -415,7 +415,7 @@ static PointerRNA rna_PoseChannel_bone_group_get(PointerRNA *ptr)
bActionGroup *grp;
if (pose) {
grp = BLI_findlink(&pose->agroups, pchan->agrp_index - 1);
grp = static_cast<bActionGroup *>(BLI_findlink(&pose->agroups, pchan->agrp_index - 1));
}
else {
grp = NULL;
@ -426,7 +426,7 @@ static PointerRNA rna_PoseChannel_bone_group_get(PointerRNA *ptr)
static void rna_PoseChannel_bone_group_set(PointerRNA *ptr,
PointerRNA value,
struct ReportList *UNUSED(reports))
struct ReportList * /*reports*/)
{
Object *ob = (Object *)ptr->owner_id;
bPose *pose = (ob) ? ob->pose : NULL;
@ -453,7 +453,7 @@ static void rna_PoseChannel_bone_group_index_set(PointerRNA *ptr, int value)
}
static void rna_PoseChannel_bone_group_index_range(
PointerRNA *ptr, int *min, int *max, int *UNUSED(softmin), int *UNUSED(softmax))
PointerRNA *ptr, int *min, int *max, int * /*softmin*/, int * /*softmax*/)
{
Object *ob = (Object *)ptr->owner_id;
bPose *pose = (ob) ? ob->pose : NULL;
@ -471,7 +471,7 @@ static PointerRNA rna_Pose_active_bone_group_get(PointerRNA *ptr)
static void rna_Pose_active_bone_group_set(PointerRNA *ptr,
PointerRNA value,
struct ReportList *UNUSED(reports))
struct ReportList * /*reports*/)
{
bPose *pose = (bPose *)ptr->data;
pose->active_group = BLI_findindex(&pose->agroups, value.data) + 1;
@ -490,7 +490,7 @@ static void rna_Pose_active_bone_group_index_set(PointerRNA *ptr, int value)
}
static void rna_Pose_active_bone_group_index_range(
PointerRNA *ptr, int *min, int *max, int *UNUSED(softmin), int *UNUSED(softmax))
PointerRNA *ptr, int *min, int *max, int * /*softmin*/, int * /*softmax*/)
{
bPose *pose = (bPose *)ptr->data;
@ -567,7 +567,7 @@ static PointerRNA rna_PoseChannel_active_constraint_get(PointerRNA *ptr)
static void rna_PoseChannel_active_constraint_set(PointerRNA *ptr,
PointerRNA value,
struct ReportList *UNUSED(reports))
struct ReportList * /*reports*/)
{
bPoseChannel *pchan = (bPoseChannel *)ptr->data;
BKE_constraints_active_set(&pchan->constraints, (bConstraint *)value.data);
@ -590,7 +590,7 @@ static bConstraint *rna_PoseChannel_constraints_new(ID *id,
static void rna_PoseChannel_constraints_remove(
ID *id, bPoseChannel *pchan, Main *bmain, ReportList *reports, PointerRNA *con_ptr)
{
bConstraint *con = con_ptr->data;
bConstraint *con = static_cast<bConstraint *>(con_ptr->data);
const bool is_ik = ELEM(con->type, CONSTRAINT_TYPE_KINEMATIC, CONSTRAINT_TYPE_SPLINEIK);
Object *ob = (Object *)id;
@ -639,7 +639,7 @@ static bConstraint *rna_PoseChannel_constraints_copy(ID *id,
PointerRNA *con_ptr)
{
Object *ob = (Object *)id;
bConstraint *con = con_ptr->data;
bConstraint *con = static_cast<bConstraint *>(con_ptr->data);
bConstraint *new_con = BKE_constraint_copy_for_pose(ob, pchan, con);
new_con->flag |= CONSTRAINT_OVERRIDE_LIBRARY_LOCAL;
@ -652,16 +652,16 @@ static bConstraint *rna_PoseChannel_constraints_copy(ID *id,
bool rna_PoseChannel_constraints_override_apply(Main *bmain,
PointerRNA *ptr_dst,
PointerRNA *ptr_src,
PointerRNA *UNUSED(ptr_storage),
PointerRNA * /*ptr_storage*/,
PropertyRNA *prop_dst,
PropertyRNA *UNUSED(prop_src),
PropertyRNA *UNUSED(prop_storage),
const int UNUSED(len_dst),
const int UNUSED(len_src),
const int UNUSED(len_storage),
PointerRNA *UNUSED(ptr_item_dst),
PointerRNA *UNUSED(ptr_item_src),
PointerRNA *UNUSED(ptr_item_storage),
PropertyRNA * /*prop_src*/,
PropertyRNA * /*prop_storage*/,
const int /*len_dst*/,
const int /*len_src*/,
const int /*len_storage*/,
PointerRNA * /*ptr_item_dst*/,
PointerRNA * /*ptr_item_src*/,
PointerRNA * /*ptr_item_storage*/,
IDOverrideLibraryPropertyOperation *opop)
{
BLI_assert(opop->operation == LIBOVERRIDE_OP_INSERT_AFTER &&
@ -674,14 +674,15 @@ bool rna_PoseChannel_constraints_override_apply(Main *bmain,
* even if we insert several items in a row, we always insert first one, then second one, etc.
* So we should always find 'anchor' constraint in both _src *and* _dst */
const size_t name_offset = offsetof(bConstraint, name);
bConstraint *con_anchor = BLI_listbase_string_or_index_find(&pchan_dst->constraints,
opop->subitem_reference_name,
name_offset,
opop->subitem_reference_index);
bConstraint *con_anchor = static_cast<bConstraint *>(
BLI_listbase_string_or_index_find(&pchan_dst->constraints,
opop->subitem_reference_name,
name_offset,
opop->subitem_reference_index));
/* If `con_anchor` is NULL, `con_src` will be inserted in first position. */
bConstraint *con_src = BLI_listbase_string_or_index_find(
&pchan_src->constraints, opop->subitem_local_name, name_offset, opop->subitem_local_index);
bConstraint *con_src = static_cast<bConstraint *>(BLI_listbase_string_or_index_find(
&pchan_src->constraints, opop->subitem_local_name, name_offset, opop->subitem_local_index));
if (con_src == NULL) {
BLI_assert(con_src != NULL);
@ -703,7 +704,7 @@ bool rna_PoseChannel_constraints_override_apply(Main *bmain,
return true;
}
static int rna_PoseChannel_proxy_editable(PointerRNA *UNUSED(ptr), const char **UNUSED(r_info))
static int rna_PoseChannel_proxy_editable(PointerRNA * /*ptr*/, const char ** /*r_info*/)
{
# if 0
Object *ob = (Object *)ptr->owner_id;
@ -853,12 +854,13 @@ static bPoseChannel *rna_PoseChannel_ensure_own_pchan(Object *ob,
static void rna_PoseChannel_custom_shape_transform_set(PointerRNA *ptr,
PointerRNA value,
struct ReportList *UNUSED(reports))
struct ReportList * /*reports*/)
{
bPoseChannel *pchan = (bPoseChannel *)ptr->data;
Object *ob = (Object *)ptr->owner_id;
pchan->custom_tx = rna_PoseChannel_ensure_own_pchan(ob, (Object *)value.owner_id, value.data);
pchan->custom_tx = static_cast<bPoseChannel *>(rna_PoseChannel_ensure_own_pchan(
ob, (Object *)value.owner_id, static_cast<bPoseChannel *>(value.data)));
}
#else
@ -962,7 +964,7 @@ static void rna_def_pose_channel_constraints(BlenderRNA *brna, PropertyRNA *cpro
/* constraint to add */
parm = RNA_def_enum(
func, "type", rna_enum_constraint_type_items, 1, "", "Constraint type to add");
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_REQUIRED);
func = RNA_def_function(srna, "remove", "rna_PoseChannel_constraints_remove");
RNA_def_function_ui_description(func, "Remove a constraint from this object");
@ -971,16 +973,16 @@ static void rna_def_pose_channel_constraints(BlenderRNA *brna, PropertyRNA *cpro
/* constraint to remove */
parm = RNA_def_pointer(func, "constraint", "Constraint", "", "Removed constraint");
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, ParameterFlag(0));
func = RNA_def_function(srna, "move", "rna_PoseChannel_constraints_move");
RNA_def_function_ui_description(func, "Move a constraint to a different position");
RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_MAIN | FUNC_USE_REPORTS);
parm = RNA_def_int(
func, "from_index", -1, INT_MIN, INT_MAX, "From Index", "Index to move", 0, 10000);
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_REQUIRED);
parm = RNA_def_int(func, "to_index", -1, INT_MIN, INT_MAX, "To Index", "Target index", 0, 10000);
RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
RNA_def_parameter_flags(parm, PropertyFlag(0), PARM_REQUIRED);
func = RNA_def_function(srna, "copy", "rna_PoseChannel_constraints_copy");
RNA_def_function_ui_description(func, "Add a new constraint that is a copy of the given one");
@ -992,7 +994,7 @@ static void rna_def_pose_channel_constraints(BlenderRNA *brna, PropertyRNA *cpro
"",
"Constraint to copy - may belong to a different object");
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, ParameterFlag(0));
/* return type */
parm = RNA_def_pointer(func, "new_constraint", "Constraint", "", "New constraint");
RNA_def_function_return(func, parm);
@ -1645,7 +1647,7 @@ static void rna_def_bone_groups(BlenderRNA *brna, PropertyRNA *cprop)
/* bone group to remove */
parm = RNA_def_pointer(func, "group", "BoneGroup", "", "Removed bone group");
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, ParameterFlag(0));
prop = RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "BoneGroup");

View File

@ -190,6 +190,8 @@ static BlendFileReadWMSetupData *wm_file_read_setup_wm_init(bContext *C,
wmWindowManager *wm = static_cast<wmWindowManager *>(bmain->wm.first);
BlendFileReadWMSetupData *wm_setup_data = MEM_cnew<BlendFileReadWMSetupData>(__func__);
wm_setup_data->is_read_homefile = is_read_homefile;
/* This info is not always known yet when this function is called. */
wm_setup_data->is_factory_startup = false;
if (wm == nullptr) {
return wm_setup_data;
@ -404,10 +406,13 @@ static void wm_file_read_setup_wm_finalize(bContext *C,
BLI_assert(wm_setup_data != nullptr);
wmWindowManager *wm = static_cast<wmWindowManager *>(bmain->wm.first);
/* If reading home (startup) file, and there was no previous WM, clear the size of the windows in
* newly read WM so that they get resized to occupy the whole available space on current monitor.
/* If reading factory startup file, and there was no previous WM, clear the size of the windows
* in newly read WM so that they get resized to occupy the whole available space on current
* monitor.
*/
if (wm_setup_data->is_read_homefile && wm_setup_data->old_wm == nullptr) {
if (wm_setup_data->is_read_homefile && wm_setup_data->is_factory_startup &&
wm_setup_data->old_wm == nullptr)
{
wm_clear_default_size(C);
}
@ -1352,6 +1357,7 @@ void wm_homefile_read_ex(bContext *C,
BKE_reportf(reports, RPT_ERROR, "Could not read \"%s\"", filepath_startup_override);
}
bool loaded_factory_settings = false;
if (success == false) {
BlendFileReadParams read_file_params{};
read_file_params.is_startup = true;
@ -1364,6 +1370,7 @@ void wm_homefile_read_ex(bContext *C,
BKE_blendfile_read_setup_readfile(
C, bfd, &read_file_params, wm_setup_data, &read_report, true, nullptr);
success = true;
loaded_factory_settings = true;
bmain = CTX_data_main(C);
}
}
@ -1418,6 +1425,7 @@ void wm_homefile_read_ex(bContext *C,
if (use_data) {
/* Finalize handling of WM, using the read WM and/or the current WM depending on things like
* whether the UI is loaded from the .blend file or not, etc. */
wm_setup_data->is_factory_startup = loaded_factory_settings;
wm_file_read_setup_wm_finalize(C, bmain, wm_setup_data);
}