Skip to content

Commit

Permalink
There will be some code that needs to migrate to create/destroy routi…
Browse files Browse the repository at this point in the history
…nes.
  • Loading branch information
starseeker committed Jan 24, 2025
1 parent da79b2a commit 1bd9860
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 10 deletions.
3 changes: 2 additions & 1 deletion src/mged/mged.h
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ struct mged_solid_edit {

// Tolerance for calculations
const struct bn_tol *tol;
struct bview *vp;

// Primary variable used to identify specific editing operations
int edit_flag;
Expand Down Expand Up @@ -287,7 +288,7 @@ extern void
mged_state_destroy(struct mged_state *s);

extern struct mged_solid_edit *
mged_solid_edit_create(struct rt_db_internal *ip);
mged_solid_edit_create(struct rt_db_internal *ip, struct bn_tol *, struct bview *v);
extern void
mged_solid_edit_destroy(struct mged_solid_edit *ssed);

Expand Down
24 changes: 22 additions & 2 deletions src/mged/mged_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,11 @@ mged_state_create(void)
{
struct mged_state *s;
BU_GET(s, struct mged_state);
s->magic = MGED_STATE_MAGIC;

BU_GET(s->i, struct mged_state_impl);
s->i->i = new MGED_Internal;

s->magic = MGED_STATE_MAGIC;
s->classic_mged = 1;
s->interactive = 0; /* >0 means interactive, intentionally starts
* 0 to know when interactive, e.g., via -C
Expand All @@ -45,6 +46,7 @@ mged_state_create(void)
bu_vls_init(&s->scratchline);
bu_vls_init(&s->mged_prompt);
s->dpy_string = NULL;

s->s_edit.tol = &s->tol.tol;
BU_GET(s->s_edit.log_str, struct bu_vls);
bu_vls_init(s->s_edit.log_str);
Expand Down Expand Up @@ -72,12 +74,26 @@ mged_state_destroy(struct mged_state *s)
}

struct mged_solid_edit *
mged_solid_edit_create(struct rt_db_internal *UNUSED(ip))
mged_solid_edit_create(struct rt_db_internal *UNUSED(ip), struct bn_tol *tol, struct bview *v)
{
struct mged_solid_edit *s;
BU_GET(s, struct mged_solid_edit);
BU_GET(s->i, struct mged_solid_edit_impl);
s->i->i = new MGED_SEDIT_Internal;
s->tol = tol;
s->vp = v;

MAT_IDN(s->model_changes);
MAT_IDN(s->acc_rot_sol);
s->solid_edit_rotate = 0;
s->solid_edit_translate = 0;
s->solid_edit_scale = 0;
s->solid_edit_pick = 0;
s->e_inpara = 0;

BU_GET(s->log_str, struct bu_vls);
bu_vls_init(s->log_str);

return s;
}

Expand All @@ -86,6 +102,10 @@ mged_solid_edit_destroy(struct mged_solid_edit *s)
{
if (!s)
return;

bu_vls_free(s->log_str);
BU_PUT(s->log_str, struct bu_vls);

delete s->i->i;
BU_PUT(s->i, struct mged_solid_edit_impl);
BU_PUT(s, struct mged_solid_edit);
Expand Down
14 changes: 7 additions & 7 deletions src/mged/mged_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,12 @@

class MGED_Internal {
public:
std::map<int, std::pair<bu_clbk_t, void *>> cmd_prerun_clbk;
std::map<int, std::pair<bu_clbk_t, void *>> cmd_during_clbk;
std::map<int, std::pair<bu_clbk_t, void *>> cmd_postrun_clbk;
std::map<int, std::pair<bu_clbk_t, void *>> cmd_linger_clbk;

std::map<bu_clbk_t, int> clbk_recursion_depth_cnt;
std::map<int, int> cmd_recursion_depth_cnt;
// First key is primitive type (e.g. ID_ETO), second key is ECMD_
// number.
std::map<int, std::map<int, std::pair<bu_clbk_t, void *>>> cmd_prerun_clbk;
std::map<int, std::map<int, std::pair<bu_clbk_t, void *>>> cmd_during_clbk;
std::map<int, std::map<int, std::pair<bu_clbk_t, void *>>> cmd_postrun_clbk;
std::map<int, std::map<int, std::pair<bu_clbk_t, void *>>> cmd_linger_clbk;
};

#else
Expand All @@ -60,6 +59,7 @@ struct mged_state_impl {

class MGED_SEDIT_Internal {
public:
// Key is ECMD_ type, populated from MGED_Internal map
std::map<int, std::pair<bu_clbk_t, void *>> cmd_prerun_clbk;
std::map<int, std::pair<bu_clbk_t, void *>> cmd_during_clbk;
std::map<int, std::pair<bu_clbk_t, void *>> cmd_postrun_clbk;
Expand Down

0 comments on commit 1bd9860

Please sign in to comment.