Cleanup: Reduce `void *` reliance of new sequencer C++ Outliner elements
Plan is to remove things like `TreeElement.directdata` and to instead expose specific queries in the new type specific tree-element classes. e.g. like here: `TreeElementSequence.getSequence()` For now uses `tree_element_cast<>()` to get the new type specific tree-element, later these should replace `TreeElement` all together.
This commit is contained in:
parent
08e2885796
commit
fc0dd5583c
|
@ -107,7 +107,7 @@ typedef struct TreeElement {
|
|||
short idcode; /* From TreeStore id. */
|
||||
short xend; /* Width of item display, for select. */
|
||||
const char *name;
|
||||
void *directdata; /* Armature Bones, Base, Sequence, Strip... */
|
||||
void *directdata; /* Armature Bones, Base, ... */
|
||||
PointerRNA rnaptr; /* RNA Pointer. */
|
||||
} TreeElement;
|
||||
|
||||
|
|
|
@ -80,6 +80,9 @@
|
|||
#include "RNA_define.h"
|
||||
|
||||
#include "outliner_intern.hh"
|
||||
#include "tree/tree_element_seq.hh"
|
||||
|
||||
using namespace blender::ed::outliner;
|
||||
|
||||
/**
|
||||
* \note changes to selection are by convention and not essential.
|
||||
|
@ -676,7 +679,8 @@ static void tree_element_sequence_activate(bContext *C,
|
|||
TreeElement *te,
|
||||
const eOLSetState set)
|
||||
{
|
||||
Sequence *seq = (Sequence *)te->directdata;
|
||||
const TreeElementSequence *te_seq = tree_element_cast<TreeElementSequence>(te);
|
||||
Sequence *seq = &te_seq->getSequence();
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
|
||||
if (BLI_findindex(ed->seqbasep, seq) != -1) {
|
||||
|
@ -954,7 +958,8 @@ static eOLDrawState tree_element_posegroup_state_get(const ViewLayer *view_layer
|
|||
|
||||
static eOLDrawState tree_element_sequence_state_get(const Scene *scene, const TreeElement *te)
|
||||
{
|
||||
const Sequence *seq = (const Sequence *)te->directdata;
|
||||
const TreeElementSequence *te_seq = tree_element_cast<TreeElementSequence>(te);
|
||||
const Sequence *seq = &te_seq->getSequence();
|
||||
const Editing *ed = scene->ed;
|
||||
|
||||
if (ed && ed->act_seq == seq && seq->flag & SELECT) {
|
||||
|
@ -965,7 +970,9 @@ static eOLDrawState tree_element_sequence_state_get(const Scene *scene, const Tr
|
|||
|
||||
static eOLDrawState tree_element_sequence_dup_state_get(const TreeElement *te)
|
||||
{
|
||||
const Sequence *seq = (const Sequence *)te->directdata;
|
||||
const TreeElementSequenceStripDuplicate *te_dup =
|
||||
tree_element_cast<TreeElementSequenceStripDuplicate>(te);
|
||||
const Sequence *seq = &te_dup->getSequence();
|
||||
if (seq->flag & SELECT) {
|
||||
return OL_DRAWSEL_NORMAL;
|
||||
}
|
||||
|
|
|
@ -96,9 +96,12 @@
|
|||
#include "SEQ_sequencer.h"
|
||||
|
||||
#include "outliner_intern.hh"
|
||||
#include "tree/tree_element_seq.hh"
|
||||
|
||||
static CLG_LogRef LOG = {"ed.outliner.tools"};
|
||||
|
||||
using namespace blender::ed::outliner;
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name ID/Library/Data Set/Un-link Utilities
|
||||
* \{ */
|
||||
|
@ -1285,7 +1288,8 @@ static void ebone_fn(int event, TreeElement *te, TreeStoreElem *UNUSED(tselem),
|
|||
|
||||
static void sequence_fn(int event, TreeElement *te, TreeStoreElem *UNUSED(tselem), void *scene_ptr)
|
||||
{
|
||||
Sequence *seq = (Sequence *)te->directdata;
|
||||
TreeElementSequence *te_seq = tree_element_cast<TreeElementSequence>(te);
|
||||
Sequence *seq = &te_seq->getSequence();
|
||||
Scene *scene = (Scene *)scene_ptr;
|
||||
Editing *ed = SEQ_editing_get(scene);
|
||||
if (BLI_findindex(ed->seqbasep, seq) != -1) {
|
||||
|
|
|
@ -41,7 +41,6 @@ TreeElementSequence::TreeElementSequence(TreeElement &legacy_te, Sequence &seque
|
|||
* so this is "safe".
|
||||
*/
|
||||
legacy_te.idcode = sequence_.type;
|
||||
legacy_te.directdata = &sequence_;
|
||||
legacy_te.name = sequence_.name + 2;
|
||||
}
|
||||
|
||||
|
@ -70,6 +69,11 @@ void TreeElementSequence::expand(SpaceOutliner &space_outliner) const
|
|||
}
|
||||
}
|
||||
|
||||
Sequence &TreeElementSequence::getSequence() const
|
||||
{
|
||||
return sequence_;
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* Strip */
|
||||
|
||||
|
@ -84,7 +88,6 @@ TreeElementSequenceStrip::TreeElementSequenceStrip(TreeElement &legacy_te, Strip
|
|||
else {
|
||||
legacy_te_.name = IFACE_("Strip None");
|
||||
}
|
||||
legacy_te_.directdata = &strip;
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
@ -92,13 +95,17 @@ TreeElementSequenceStrip::TreeElementSequenceStrip(TreeElement &legacy_te, Strip
|
|||
|
||||
TreeElementSequenceStripDuplicate::TreeElementSequenceStripDuplicate(TreeElement &legacy_te,
|
||||
Sequence &sequence)
|
||||
: AbstractTreeElement(legacy_te)
|
||||
: AbstractTreeElement(legacy_te), sequence_(sequence)
|
||||
{
|
||||
BLI_assert(legacy_te.store_elem->type == TSE_SEQUENCE_DUP);
|
||||
|
||||
legacy_te_.idcode = sequence.type;
|
||||
legacy_te_.directdata = &sequence;
|
||||
legacy_te_.name = sequence.strip->stripdata->name;
|
||||
}
|
||||
|
||||
Sequence &TreeElementSequenceStripDuplicate::getSequence() const
|
||||
{
|
||||
return sequence_;
|
||||
}
|
||||
|
||||
} // namespace blender::ed::outliner
|
||||
|
|
|
@ -35,6 +35,8 @@ class TreeElementSequence : public AbstractTreeElement {
|
|||
|
||||
bool expandPoll(const SpaceOutliner &) const override;
|
||||
void expand(SpaceOutliner &) const override;
|
||||
|
||||
Sequence &getSequence() const;
|
||||
};
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
@ -47,8 +49,12 @@ class TreeElementSequenceStrip : public AbstractTreeElement {
|
|||
/* -------------------------------------------------------------------- */
|
||||
|
||||
class TreeElementSequenceStripDuplicate : public AbstractTreeElement {
|
||||
Sequence &sequence_;
|
||||
|
||||
public:
|
||||
TreeElementSequenceStripDuplicate(TreeElement &legacy_te, Sequence &sequence);
|
||||
|
||||
Sequence &getSequence() const;
|
||||
};
|
||||
|
||||
} // namespace blender::ed::outliner
|
||||
|
|
Loading…
Reference in New Issue