static BLI_bitmap *get_tface_mesh_marked_edge_info(Mesh *me, bool draw_select_edges) { BLI_bitmap *bitmap_edge_flags = BLI_BITMAP_NEW(me->totedge * 2, __func__); MPoly *mp; MLoop *ml; int i, j; bool select_set; for (i = 0; i < me->totpoly; i++) { mp = &me->mpoly[i]; if (!(mp->flag & ME_HIDE)) { select_set = (mp->flag & ME_FACE_SEL) != 0; ml = me->mloop + mp->loopstart; for (j = 0; j < mp->totloop; j++, ml++) { if ((draw_select_edges == false) && (select_set && BLI_BITMAP_TEST(bitmap_edge_flags, edge_sel_index(ml->e)))) { BLI_BITMAP_DISABLE(bitmap_edge_flags, edge_vis_index(ml->e)); } else { BLI_BITMAP_ENABLE(bitmap_edge_flags, edge_vis_index(ml->e)); if (select_set) { BLI_BITMAP_ENABLE(bitmap_edge_flags, edge_sel_index(ml->e)); } } } } } return bitmap_edge_flags; }
static DMDrawOption draw_mesh_face_select__setHiddenOpts(void *userData, int index) { drawMeshFaceSelect_userData *data = userData; Mesh *me = data->me; if (me->drawflag & ME_DRAWEDGES) { if ((me->drawflag & ME_HIDDENEDGES) || (BLI_BITMAP_GET(data->edge_flags, edge_vis_index(index)))) return DM_DRAW_OPTION_NORMAL; else return DM_DRAW_OPTION_SKIP; } else if (BLI_BITMAP_GET(data->edge_flags, edge_sel_index(index))) return DM_DRAW_OPTION_NORMAL; else return DM_DRAW_OPTION_SKIP; }
static BLI_bitmap get_tface_mesh_marked_edge_info(Mesh *me) { BLI_bitmap bitmap_edge_flags = BLI_BITMAP_NEW(me->totedge * 2, __func__); MPoly *mp; MLoop *ml; int i, j; bool select_set; for (i = 0; i < me->totpoly; i++) { mp = &me->mpoly[i]; if (!(mp->flag & ME_HIDE)) { select_set = (mp->flag & ME_FACE_SEL) != 0; ml = me->mloop + mp->loopstart; for (j = 0; j < mp->totloop; j++, ml++) { BLI_BITMAP_SET(bitmap_edge_flags, edge_vis_index(ml->e)); if (select_set) BLI_BITMAP_SET(bitmap_edge_flags, edge_sel_index(ml->e)); } } } return bitmap_edge_flags; }
static DMDrawOption draw_mesh_face_select__setSelectOpts(void *userData, int index) { drawMeshFaceSelect_userData *data = userData; return (BLI_BITMAP_GET(data->edge_flags, edge_sel_index(index))) ? DM_DRAW_OPTION_NORMAL : DM_DRAW_OPTION_SKIP; }