WIP: Brush assets project #106303

Draft
Julian Eisel wants to merge 381 commits from brush-assets-project into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
11 changed files with 45 additions and 29 deletions
Showing only changes of commit 684d837c30 - Show all commits

View File

@ -36,13 +36,16 @@ void ED_spacetype_nla();
void ED_spacetype_script(); void ED_spacetype_script();
void ED_spacetype_text(); void ED_spacetype_text();
void ED_spacetype_sequencer(); void ED_spacetype_sequencer();
void ED_spacetype_logic();
void ED_spacetype_console(); void ED_spacetype_console();
void ED_spacetype_userpref(); void ED_spacetype_userpref();
void ED_spacetype_clip(); void ED_spacetype_clip();
void ED_spacetype_statusbar(); void ED_spacetype_statusbar();
void ED_spacetype_topbar(); void ED_spacetype_topbar();
void ED_spacetype_spreadsheet(); namespace blender::ed {
namespace spreadsheet {
void register_spacetype();
}
} // namespace blender::ed
/** \} */ /** \} */

View File

@ -7,4 +7,8 @@
struct ID; struct ID;
struct SpaceSpreadsheet; struct SpaceSpreadsheet;
ID *ED_spreadsheet_get_current_id(const SpaceSpreadsheet *sspreadsheet); namespace blender::ed::spreadsheet {
ID *get_current_id(const SpaceSpreadsheet *sspreadsheet);
}

View File

@ -84,7 +84,7 @@ void ED_spacetypes_init()
ED_spacetype_clip(); ED_spacetype_clip();
ED_spacetype_statusbar(); ED_spacetype_statusbar();
ED_spacetype_topbar(); ED_spacetype_topbar();
ED_spacetype_spreadsheet(); spreadsheet::register_spacetype();
/* Register operator types for screen and all spaces. */ /* Register operator types for screen and all spaces. */
ED_operatortypes_userpref(); ED_operatortypes_userpref();

View File

@ -48,8 +48,7 @@
#include <sstream> #include <sstream>
using namespace blender; namespace blender::ed::spreadsheet {
using namespace blender::ed::spreadsheet;
static SpaceLink *spreadsheet_create(const ScrArea * /*area*/, const Scene * /*scene*/) static SpaceLink *spreadsheet_create(const ScrArea * /*area*/, const Scene * /*scene*/)
{ {
@ -193,7 +192,7 @@ static void spreadsheet_main_region_init(wmWindowManager *wm, ARegion *region)
} }
} }
ID *ED_spreadsheet_get_current_id(const SpaceSpreadsheet *sspreadsheet) ID *get_current_id(const SpaceSpreadsheet *sspreadsheet)
{ {
if (BLI_listbase_is_empty(&sspreadsheet->viewer_path.path)) { if (BLI_listbase_is_empty(&sspreadsheet->viewer_path.path)) {
return nullptr; return nullptr;
@ -296,7 +295,7 @@ static void spreadsheet_update_context(const bContext *C)
Object *spreadsheet_get_object_eval(const SpaceSpreadsheet *sspreadsheet, Object *spreadsheet_get_object_eval(const SpaceSpreadsheet *sspreadsheet,
const Depsgraph *depsgraph) const Depsgraph *depsgraph)
{ {
ID *used_id = ED_spreadsheet_get_current_id(sspreadsheet); ID *used_id = get_current_id(sspreadsheet);
if (used_id == nullptr) { if (used_id == nullptr) {
return nullptr; return nullptr;
} }
@ -717,7 +716,7 @@ static void spreadsheet_blend_write(BlendWriter *writer, SpaceLink *sl)
BKE_viewer_path_blend_write(writer, &sspreadsheet->viewer_path); BKE_viewer_path_blend_write(writer, &sspreadsheet->viewer_path);
} }
void ED_spacetype_spreadsheet() void register_spacetype()
{ {
SpaceType *st = MEM_cnew<SpaceType>("spacetype spreadsheet"); SpaceType *st = MEM_cnew<SpaceType>("spacetype spreadsheet");
ARegionType *art; ARegionType *art;
@ -801,8 +800,10 @@ void ED_spacetype_spreadsheet()
art->init = ED_region_panels_init; art->init = ED_region_panels_init;
art->draw = spreadsheet_dataset_region_draw; art->draw = spreadsheet_dataset_region_draw;
art->listener = spreadsheet_dataset_region_listener; art->listener = spreadsheet_dataset_region_listener;
blender::ed::spreadsheet::spreadsheet_data_set_region_panels_register(*art); spreadsheet_data_set_region_panels_register(*art);
BLI_addhead(&st->regiontypes, art); BLI_addhead(&st->regiontypes, art);
BKE_spacetype_register(st); BKE_spacetype_register(st);
} }
} // namespace blender::ed::spreadsheet

View File

@ -487,14 +487,14 @@ std::unique_ptr<ColumnValues> VolumeDataSource::get_column_values(
if (STREQ(column_id.name, "Grid Name")) { if (STREQ(column_id.name, "Grid Name")) {
return std::make_unique<ColumnValues>( return std::make_unique<ColumnValues>(
IFACE_("Grid Name"), VArray<std::string>::ForFunc(size, [volume](int64_t index) { IFACE_("Grid Name"), VArray<std::string>::ForFunc(size, [volume](int64_t index) {
const blender::bke::VolumeGridData *volume_grid = BKE_volume_grid_get(volume, index); const bke::VolumeGridData *volume_grid = BKE_volume_grid_get(volume, index);
return volume_grid->name(); return volume_grid->name();
})); }));
} }
if (STREQ(column_id.name, "Data Type")) { if (STREQ(column_id.name, "Data Type")) {
return std::make_unique<ColumnValues>( return std::make_unique<ColumnValues>(
IFACE_("Data Type"), VArray<std::string>::ForFunc(size, [volume](int64_t index) { IFACE_("Data Type"), VArray<std::string>::ForFunc(size, [volume](int64_t index) {
const blender::bke::VolumeGridData *volume_grid = BKE_volume_grid_get(volume, index); const bke::VolumeGridData *volume_grid = BKE_volume_grid_get(volume, index);
const VolumeGridType type = volume_grid->grid_type(); const VolumeGridType type = volume_grid->grid_type();
const char *name = nullptr; const char *name = nullptr;
RNA_enum_name_from_value(rna_enum_volume_grid_data_type_items, type, &name); RNA_enum_name_from_value(rna_enum_volume_grid_data_type_items, type, &name);
@ -504,7 +504,7 @@ std::unique_ptr<ColumnValues> VolumeDataSource::get_column_values(
if (STREQ(column_id.name, "Class")) { if (STREQ(column_id.name, "Class")) {
return std::make_unique<ColumnValues>( return std::make_unique<ColumnValues>(
IFACE_("Class"), VArray<std::string>::ForFunc(size, [volume](int64_t index) { IFACE_("Class"), VArray<std::string>::ForFunc(size, [volume](int64_t index) {
const blender::bke::VolumeGridData *volume_grid = BKE_volume_grid_get(volume, index); const bke::VolumeGridData *volume_grid = BKE_volume_grid_get(volume, index);
openvdb::GridClass grid_class = volume_grid->grid_class(); openvdb::GridClass grid_class = volume_grid->grid_class();
if (grid_class == openvdb::GridClass::GRID_FOG_VOLUME) { if (grid_class == openvdb::GridClass::GRID_FOG_VOLUME) {
return IFACE_("Fog Volume"); return IFACE_("Fog Volume");

View File

@ -7,13 +7,18 @@
#include "BKE_geometry_set.hh" #include "BKE_geometry_set.hh"
#include "spreadsheet_cache.hh" #include "spreadsheet_cache.hh"
struct ARegionType;
struct bContext;
namespace blender::ed::spreadsheet {
struct SpaceSpreadsheet_Runtime { struct SpaceSpreadsheet_Runtime {
public: public:
int visible_rows = 0; int visible_rows = 0;
int tot_rows = 0; int tot_rows = 0;
int tot_columns = 0; int tot_columns = 0;
blender::ed::spreadsheet::SpreadsheetCache cache; SpreadsheetCache cache;
SpaceSpreadsheet_Runtime() = default; SpaceSpreadsheet_Runtime() = default;
@ -24,15 +29,10 @@ struct SpaceSpreadsheet_Runtime {
} }
}; };
struct ARegionType;
struct bContext;
void spreadsheet_operatortypes(); void spreadsheet_operatortypes();
void spreadsheet_update_context_path(const bContext *C);
Object *spreadsheet_get_object_eval(const SpaceSpreadsheet *sspreadsheet, Object *spreadsheet_get_object_eval(const SpaceSpreadsheet *sspreadsheet,
const Depsgraph *depsgraph); const Depsgraph *depsgraph);
namespace blender::ed::spreadsheet {
bke::GeometrySet spreadsheet_get_display_geometry_set(const SpaceSpreadsheet *sspreadsheet, bke::GeometrySet spreadsheet_get_display_geometry_set(const SpaceSpreadsheet *sspreadsheet,
Object *object_eval); Object *object_eval);

View File

@ -22,7 +22,7 @@
#include "spreadsheet_intern.hh" #include "spreadsheet_intern.hh"
#include "spreadsheet_row_filter.hh" #include "spreadsheet_row_filter.hh"
using namespace blender::ed::spreadsheet; namespace blender::ed::spreadsheet {
static int row_filter_add_exec(bContext *C, wmOperator * /*op*/) static int row_filter_add_exec(bContext *C, wmOperator * /*op*/)
{ {
@ -82,9 +82,7 @@ static void SPREADSHEET_OT_remove_row_filter_rule(wmOperatorType *ot)
static int select_component_domain_invoke(bContext *C, wmOperator *op, const wmEvent * /*event*/) static int select_component_domain_invoke(bContext *C, wmOperator *op, const wmEvent * /*event*/)
{ {
using namespace blender; const auto component_type = bke::GeometryComponent::Type(RNA_int_get(op->ptr, "component_type"));
const auto component_type = blender::bke::GeometryComponent::Type(
RNA_int_get(op->ptr, "component_type"));
bke::AttrDomain domain = bke::AttrDomain(RNA_int_get(op->ptr, "attribute_domain_type")); bke::AttrDomain domain = bke::AttrDomain(RNA_int_get(op->ptr, "attribute_domain_type"));
SpaceSpreadsheet *sspreadsheet = CTX_wm_space_spreadsheet(C); SpaceSpreadsheet *sspreadsheet = CTX_wm_space_spreadsheet(C);
@ -126,3 +124,5 @@ void spreadsheet_operatortypes()
WM_operatortype_append(SPREADSHEET_OT_remove_row_filter_rule); WM_operatortype_append(SPREADSHEET_OT_remove_row_filter_rule);
WM_operatortype_append(SPREADSHEET_OT_change_spreadsheet_data_source); WM_operatortype_append(SPREADSHEET_OT_change_spreadsheet_data_source);
} }
} // namespace blender::ed::spreadsheet

View File

@ -31,8 +31,7 @@
#include <sstream> #include <sstream>
using namespace blender; namespace blender::ed::spreadsheet {
using namespace blender::ed::spreadsheet;
static void filter_panel_id_fn(void * /*row_filter_v*/, char *r_name) static void filter_panel_id_fn(void * /*row_filter_v*/, char *r_name)
{ {
@ -367,3 +366,5 @@ void register_row_filter_panels(ARegionType &region_type)
BLI_addtail(&region_type.paneltypes, panel_type); BLI_addtail(&region_type.paneltypes, panel_type);
} }
} }
} // namespace blender::ed::spreadsheet

View File

@ -6,4 +6,8 @@
struct ARegionType; struct ARegionType;
namespace blender::ed::spreadsheet {
void register_row_filter_panels(ARegionType &region_type); void register_row_filter_panels(ARegionType &region_type);
}

View File

@ -76,19 +76,22 @@ namespace blender::ed::text {
struct SpaceText_Runtime; struct SpaceText_Runtime;
} // namespace blender::ed::text } // namespace blender::ed::text
using SpaceText_Runtime = blender::ed::text::SpaceText_Runtime; using SpaceText_Runtime = blender::ed::text::SpaceText_Runtime;
namespace blender::ed::spreadsheet {
struct SpaceSpreadsheet_Runtime;
} // namespace blender::ed::spreadsheet
using SpaceSpreadsheet_Runtime = blender::ed::spreadsheet::SpaceSpreadsheet_Runtime;
#else #else
typedef struct SpaceNode_Runtime SpaceNode_Runtime; typedef struct SpaceNode_Runtime SpaceNode_Runtime;
typedef struct SpaceOutliner_Runtime SpaceOutliner_Runtime; typedef struct SpaceOutliner_Runtime SpaceOutliner_Runtime;
typedef struct SpaceSeq_Runtime SpaceSeq_Runtime; typedef struct SpaceSeq_Runtime SpaceSeq_Runtime;
typedef struct SpaceText_Runtime SpaceText_Runtime; typedef struct SpaceText_Runtime SpaceText_Runtime;
typedef struct SpaceSpreadsheet_Runtime SpaceSpreadsheet_Runtime;
#endif #endif
/** Defined in `file_intern.hh`. */ /** Defined in `file_intern.hh`. */
typedef struct SpaceFile_Runtime SpaceFile_Runtime; typedef struct SpaceFile_Runtime SpaceFile_Runtime;
/** Defined in `spreadsheet_intern.hh`. */
typedef struct SpaceSpreadsheet_Runtime SpaceSpreadsheet_Runtime;
/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */
/** \name SpaceLink (Base) /** \name SpaceLink (Base)
* \{ */ * \{ */

View File

@ -3297,7 +3297,7 @@ const EnumPropertyItem *rna_SpaceSpreadsheet_attribute_domain_itemf(bContext * /
SpaceSpreadsheet *sspreadsheet = (SpaceSpreadsheet *)ptr->data; SpaceSpreadsheet *sspreadsheet = (SpaceSpreadsheet *)ptr->data;
auto component_type = bke::GeometryComponent::Type(sspreadsheet->geometry_component_type); auto component_type = bke::GeometryComponent::Type(sspreadsheet->geometry_component_type);
if (sspreadsheet->object_eval_state == SPREADSHEET_OBJECT_EVAL_STATE_ORIGINAL) { if (sspreadsheet->object_eval_state == SPREADSHEET_OBJECT_EVAL_STATE_ORIGINAL) {
ID *used_id = ED_spreadsheet_get_current_id(sspreadsheet); ID *used_id = ed::spreadsheet::get_current_id(sspreadsheet);
if (used_id != nullptr) { if (used_id != nullptr) {
if (GS(used_id->name) == ID_OB) { if (GS(used_id->name) == ID_OB) {
Object *used_object = (Object *)used_id; Object *used_object = (Object *)used_id;