Spreadsheet Editor: Support int 8 attribute
This was leading to some crashes and warnings such as: "Code marked as unreachable has been executed. Please report this as a bug." Differential Revision: https://developer.blender.org/D15116
This commit is contained in:
parent
074010ad6d
commit
0b38b8dafa
|
@ -304,6 +304,7 @@ static float get_default_column_width(const ColumnValues &values)
|
|||
switch (values.type()) {
|
||||
case SPREADSHEET_VALUE_TYPE_BOOL:
|
||||
return 2.0f;
|
||||
case SPREADSHEET_VALUE_TYPE_INT8:
|
||||
case SPREADSHEET_VALUE_TYPE_INT32:
|
||||
return float_width;
|
||||
case SPREADSHEET_VALUE_TYPE_FLOAT:
|
||||
|
|
|
@ -23,6 +23,9 @@ eSpreadsheetColumnValueType cpp_type_to_column_type(const CPPType &type)
|
|||
if (type.is<bool>()) {
|
||||
return SPREADSHEET_VALUE_TYPE_BOOL;
|
||||
}
|
||||
if (type.is<int8_t>()) {
|
||||
return SPREADSHEET_VALUE_TYPE_INT8;
|
||||
}
|
||||
if (type.is<int>()) {
|
||||
return SPREADSHEET_VALUE_TYPE_INT32;
|
||||
}
|
||||
|
|
|
@ -73,6 +73,35 @@ static void apply_row_filter(const SpreadsheetRowFilter &row_filter,
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (column_data.type().is<int8_t>()) {
|
||||
const int value = row_filter.value_int;
|
||||
switch (row_filter.operation) {
|
||||
case SPREADSHEET_ROW_FILTER_EQUAL: {
|
||||
apply_filter_operation(
|
||||
column_data.typed<int8_t>(),
|
||||
[&](const int cell) { return cell == value; },
|
||||
prev_mask,
|
||||
new_indices);
|
||||
break;
|
||||
}
|
||||
case SPREADSHEET_ROW_FILTER_GREATER: {
|
||||
apply_filter_operation(
|
||||
column_data.typed<int8_t>(),
|
||||
[value](const int cell) { return cell > value; },
|
||||
prev_mask,
|
||||
new_indices);
|
||||
break;
|
||||
}
|
||||
case SPREADSHEET_ROW_FILTER_LESS: {
|
||||
apply_filter_operation(
|
||||
column_data.typed<int8_t>(),
|
||||
[&](const int cell) { return cell < value; },
|
||||
prev_mask,
|
||||
new_indices);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (column_data.type().is<int>()) {
|
||||
const int value = row_filter.value_int;
|
||||
switch (row_filter.operation) {
|
||||
|
|
|
@ -63,6 +63,7 @@ static std::string value_string(const SpreadsheetRowFilter &row_filter,
|
|||
const eSpreadsheetColumnValueType data_type)
|
||||
{
|
||||
switch (data_type) {
|
||||
case SPREADSHEET_VALUE_TYPE_INT8:
|
||||
case SPREADSHEET_VALUE_TYPE_INT32:
|
||||
return std::to_string(row_filter.value_int);
|
||||
case SPREADSHEET_VALUE_TYPE_FLOAT: {
|
||||
|
@ -200,6 +201,10 @@ static void spreadsheet_filter_panel_draw(const bContext *C, Panel *panel)
|
|||
}
|
||||
|
||||
switch (static_cast<eSpreadsheetColumnValueType>(column->data_type)) {
|
||||
case SPREADSHEET_VALUE_TYPE_INT8:
|
||||
uiItemR(layout, filter_ptr, "operation", 0, nullptr, ICON_NONE);
|
||||
uiItemR(layout, filter_ptr, "value_int8", 0, IFACE_("Value"), ICON_NONE);
|
||||
break;
|
||||
case SPREADSHEET_VALUE_TYPE_INT32:
|
||||
uiItemR(layout, filter_ptr, "operation", 0, nullptr, ICON_NONE);
|
||||
uiItemR(layout, filter_ptr, "value_int", 0, IFACE_("Value"), ICON_NONE);
|
||||
|
|
|
@ -2006,6 +2006,7 @@ typedef enum eSpreadsheetColumnValueType {
|
|||
SPREADSHEET_VALUE_TYPE_INSTANCES = 6,
|
||||
SPREADSHEET_VALUE_TYPE_STRING = 7,
|
||||
SPREADSHEET_VALUE_TYPE_BYTE_COLOR = 8,
|
||||
SPREADSHEET_VALUE_TYPE_INT8 = 9,
|
||||
} eSpreadsheetColumnValueType;
|
||||
|
||||
/**
|
||||
|
|
|
@ -7807,6 +7807,12 @@ static void rna_def_spreadsheet_row_filter(BlenderRNA *brna)
|
|||
RNA_def_property_ui_text(prop, "Integer Value", "");
|
||||
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_SPREADSHEET, NULL);
|
||||
|
||||
prop = RNA_def_property(srna, "value_int8", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_int_sdna(prop, NULL, "value_int");
|
||||
RNA_def_property_range(prop, -128, 127);
|
||||
RNA_def_property_ui_text(prop, "8-Bit Integer Value", "");
|
||||
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_SPREADSHEET, NULL);
|
||||
|
||||
prop = RNA_def_property(srna, "value_boolean", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", SPREADSHEET_ROW_FILTER_BOOL_VALUE);
|
||||
RNA_def_property_ui_text(prop, "Boolean Value", "");
|
||||
|
|
Loading…
Reference in New Issue