Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-03-02 16:09:49 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-03-02 16:09:49 +0400
commit622ac0dd1682fd4949319817fd6e58fc7d7c86ed (patch)
treec52790d29ae0d7f405ad8482b6e4d68a358ea1ac /source/blender
parentcf927d3fd149cbbba4732c789ccbac239f4000f3 (diff)
code cleanup:
replace casts: '((Mesh *)ob->data)->edit_btmesh' with 'BMEdit_FromObject(ob)' also minor style edits.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/BKE_tessmesh.h1
-rw-r--r--source/blender/blenkernel/intern/editderivedmesh.c14
-rw-r--r--source/blender/blenkernel/intern/object.c4
-rw-r--r--source/blender/bmesh/operators/bmo_edgesplit.c6
-rw-r--r--source/blender/editors/mesh/bmesh_select.c36
-rw-r--r--source/blender/editors/mesh/bmesh_tools.c102
-rw-r--r--source/blender/editors/mesh/bmesh_utils.c2
-rw-r--r--source/blender/editors/mesh/knifetool.c4
-rw-r--r--source/blender/editors/mesh/loopcut.c2
-rw-r--r--source/blender/editors/mesh/mesh_navmesh.c10
-rw-r--r--source/blender/editors/mesh/mesh_ops.c2
-rw-r--r--source/blender/editors/object/object_vgroup.c11
-rw-r--r--source/blender/editors/render/render_shading.c6
-rw-r--r--source/blender/editors/screen/screen_ops.c15
-rw-r--r--source/blender/editors/sculpt_paint/paint_image.c2
-rw-r--r--source/blender/editors/sculpt_paint/sculpt_uv.c4
-rw-r--r--source/blender/editors/space_image/space_image.c4
-rw-r--r--source/blender/editors/space_info/info_stats.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_header.c18
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c6
-rw-r--r--source/blender/editors/transform/transform_conversions.c8
-rw-r--r--source/blender/editors/transform/transform_generics.c4
-rw-r--r--source/blender/editors/transform/transform_manipulator.c2
-rw-r--r--source/blender/editors/transform/transform_snap.c4
-rw-r--r--source/blender/editors/uvedit/uvedit_buttons.c12
-rw-r--r--source/blender/editors/uvedit/uvedit_draw.c2
-rw-r--r--source/blender/editors/uvedit/uvedit_ops.c136
-rw-r--r--source/blender/editors/uvedit/uvedit_smart_stitch.c2
-rw-r--r--source/blender/editors/uvedit/uvedit_unwrap_ops.c80
29 files changed, 261 insertions, 240 deletions
diff --git a/source/blender/blenkernel/BKE_tessmesh.h b/source/blender/blenkernel/BKE_tessmesh.h
index cc3f2870711..ae2882b1712 100644
--- a/source/blender/blenkernel/BKE_tessmesh.h
+++ b/source/blender/blenkernel/BKE_tessmesh.h
@@ -88,6 +88,7 @@ typedef struct BMEditMesh {
void BMEdit_RecalcTesselation(BMEditMesh *tm);
BMEditMesh *BMEdit_Create(BMesh *bm, int do_tesselate);
BMEditMesh *BMEdit_Copy(BMEditMesh *tm);
+BMEditMesh *BMEdit_FromObject(struct Object *ob);
void BMEdit_Free(BMEditMesh *em);
void BMEdit_UpdateLinkedCustomData(BMEditMesh *em);
diff --git a/source/blender/blenkernel/intern/editderivedmesh.c b/source/blender/blenkernel/intern/editderivedmesh.c
index f73a2ff6c1a..f0fb5cc64b4 100644
--- a/source/blender/blenkernel/intern/editderivedmesh.c
+++ b/source/blender/blenkernel/intern/editderivedmesh.c
@@ -47,9 +47,9 @@
#include "BKE_paint.h"
+#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
-#include "DNA_curve_types.h" /* for Curve */
#include "MEM_guardedalloc.h"
@@ -1707,3 +1707,15 @@ DerivedMesh *getEditDerivedBMesh(
return (DerivedMesh*) bmdm;
}
+
+/**
+ * \brief Return the BMEditMesh for a given object
+ *
+ * \note this function assumes this is a mesh object,
+ * don't add NULL data check here. caller must do that
+ */
+BMEditMesh *BMEdit_FromObject(Object *ob)
+{
+ BLI_assert(ob->type == OB_MESH);
+ return ((Mesh *) ob->data )->edit_btmesh;
+}
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 37fb8b4a550..52ddfb67bf8 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -2527,7 +2527,7 @@ void object_handle_update(Scene *scene, Object *ob)
case OB_MESH:
{
#if 0 // XXX, comment for 2.56a release, background wont set 'scene->customdata_mask'
- BMEditMesh *em = (ob == scene->obedit)? ((Mesh*)ob->data)->edit_btmesh : NULL;
+ BMEditMesh *em = (ob == scene->obedit) ? BMEdit_FromObject(ob) : NULL;
BLI_assert((scene->customdata_mask & CD_MASK_BAREMESH) == CD_MASK_BAREMESH);
if (em) {
makeDerivedMesh(scene, ob, em, scene->customdata_mask, 0); /* was CD_MASK_BAREMESH */
@@ -2537,7 +2537,7 @@ void object_handle_update(Scene *scene, Object *ob)
}
#else /* ensure CD_MASK_BAREMESH for now */
- BMEditMesh *em = (ob == scene->obedit)? ((Mesh*)ob->data)->edit_btmesh : NULL;
+ BMEditMesh *em = (ob == scene->obedit) ? BMEdit_FromObject(ob) : NULL;
uint64_t data_mask= scene->customdata_mask | ob->customdata_mask | CD_MASK_BAREMESH;
if (em) {
makeDerivedMesh(scene, ob, em, data_mask, 0); /* was CD_MASK_BAREMESH */
diff --git a/source/blender/bmesh/operators/bmo_edgesplit.c b/source/blender/bmesh/operators/bmo_edgesplit.c
index 059ee882fb8..69555f7b89e 100644
--- a/source/blender/bmesh/operators/bmo_edgesplit.c
+++ b/source/blender/bmesh/operators/bmo_edgesplit.c
@@ -154,25 +154,31 @@ static void tag_out_edges(BMesh *bm, EdgeTag *etags, BMOperator *UNUSED(op))
et = &etags[BM_elem_index_get(l->e)];
if (et->newe1 == l->e) {
if (et->newe1) {
+ printf("ret1a %p\n", et->newe1);
BMO_elem_flag_enable(bm, et->newe1, EDGE_RET1);
BMO_elem_flag_disable(bm, et->newe1, EDGE_SEAM);
}
if (et->newe2) {
+ printf("ret2a %p\n", et->newe2);
BMO_elem_flag_enable(bm, et->newe2, EDGE_RET2);
BMO_elem_flag_disable(bm, et->newe2, EDGE_SEAM);
}
}
else {
if (et->newe1) {
+ printf("ret2b %p\n", et->newe1);
BMO_elem_flag_enable(bm, et->newe1, EDGE_RET2);
BMO_elem_flag_disable(bm, et->newe1, EDGE_SEAM);
}
if (et->newe2) {
+ printf("ret2b %p\n", et->newe2);
BMO_elem_flag_enable(bm, et->newe2, EDGE_RET1);
BMO_elem_flag_disable(bm, et->newe2, EDGE_SEAM);
}
}
+ printf("SEAM %d\n", BMO_elem_flag_test(bm, l->e, EDGE_SEAM));
+
/* If the original edge was non-manifold edges, then it is
* possible l->e is not et->newe1 or et->newe2. So always clear
* the flag on l->e as well, to prevent infinite looping. */
diff --git a/source/blender/editors/mesh/bmesh_select.c b/source/blender/editors/mesh/bmesh_select.c
index ac658f242af..2e21f6d1f28 100644
--- a/source/blender/editors/mesh/bmesh_select.c
+++ b/source/blender/editors/mesh/bmesh_select.c
@@ -104,7 +104,7 @@ void EDBM_automerge(Scene *scene, Object *obedit, int update)
if ((scene->toolsettings->automerge) &&
(obedit && obedit->type == OB_MESH))
{
- em = ((Mesh *)obedit->data)->edit_btmesh;
+ em = BMEdit_FromObject(obedit);
if (!em)
return;
@@ -692,7 +692,7 @@ static EnumPropertyItem prop_similar_types[] = {
static int similar_face_select_exec(bContext *C, wmOperator *op)
{
Object *ob = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
BMOperator bmop;
/* get the type from RNA */
@@ -733,7 +733,7 @@ static int similar_face_select_exec(bContext *C, wmOperator *op)
static int similar_edge_select_exec(bContext *C, wmOperator *op)
{
Object *ob = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
BMOperator bmop;
/* get the type from RNA */
@@ -780,7 +780,7 @@ VERT GROUP
static int similar_vert_select_exec(bContext *C, wmOperator *op)
{
Object *ob = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
BMOperator bmop;
/* get the type from RNA */
int type = RNA_enum_get(op->ptr, "type");
@@ -833,7 +833,7 @@ static EnumPropertyItem *select_similar_type_itemf(bContext *C, PointerRNA *UNUS
if (obedit && obedit->type == OB_MESH) {
EnumPropertyItem *item = NULL;
int a, totitem = 0;
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
if (em->selectmode & SCE_SELECT_VERTEX) {
for (a = SIMVERT_NORMAL; a < SIMEDGE_LENGTH; a++) {
@@ -908,7 +908,7 @@ static void walker_select(BMEditMesh *em, int walkercode, void *start, int selec
static int loop_multiselect(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMEdge *eed;
BMEdge **edarray;
int edindex;
@@ -1728,7 +1728,7 @@ static void linked_limit_default(bContext *C, wmOperator *op)
{
if (!RNA_struct_property_is_set(op->ptr, "limit")) {
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
if (em->selectmode == SCE_SELECT_FACE)
RNA_boolean_set(op->ptr, "limit", TRUE);
else
@@ -1850,7 +1850,7 @@ void MESH_OT_select_linked_pick(wmOperatorType *ot)
static int select_linked_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMesh *bm = em->bm;
BMIter iter;
BMVert *v;
@@ -1945,7 +1945,7 @@ void MESH_OT_select_linked(wmOperatorType *ot)
static int select_more(bContext *C, wmOperator *UNUSED(op))
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = (((Mesh *)obedit->data))->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
EDBM_select_more(em);
@@ -1971,7 +1971,7 @@ void MESH_OT_select_more(wmOperatorType *ot)
static int select_less(bContext *C, wmOperator *UNUSED(op))
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = (((Mesh *)obedit->data))->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
EDBM_select_less(em);
@@ -2145,7 +2145,7 @@ static int EM_deselect_nth(BMEditMesh *em, int nth, int offset)
static int mesh_select_nth_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
int nth = RNA_int_get(op->ptr, "nth");
int offset = RNA_int_get(op->ptr, "offset");
@@ -2207,7 +2207,7 @@ static int select_sharp_edges_exec(bContext *C, wmOperator *op)
* small enough, select the edge
*/
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMIter iter;
BMEdge *e;
BMLoop *l1, *l2;
@@ -2260,7 +2260,7 @@ void MESH_OT_edges_select_sharp(wmOperatorType *ot)
static int select_linked_flat_faces_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMIter iter, liter, liter2;
BMFace *f, **stack = NULL;
BLI_array_declare(stack);
@@ -2341,7 +2341,7 @@ void MESH_OT_faces_select_linked_flat(wmOperatorType *ot)
static int select_non_manifold_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMVert *v;
BMEdge *e;
BMIter iter;
@@ -2390,7 +2390,7 @@ void MESH_OT_select_non_manifold(wmOperatorType *ot)
static int mesh_select_random_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMVert *eve;
BMEdge *eed;
BMFace *efa;
@@ -2456,7 +2456,7 @@ void MESH_OT_select_random(wmOperatorType *ot)
static int select_next_loop(bContext *C, wmOperator *UNUSED(op))
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = (((Mesh *)obedit->data))->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *f;
BMVert *v;
BMIter iter;
@@ -2506,7 +2506,7 @@ void MESH_OT_select_next_loop(wmOperatorType *ot)
static int region_to_loop(bContext *C, wmOperator *UNUSED(op))
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *f;
BMEdge *e;
BMIter iter;
@@ -2710,7 +2710,7 @@ static int loop_find_regions(BMEditMesh *em, int selbigger)
static int loop_to_region(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMIter iter;
BMFace *f;
int selbigger = RNA_boolean_get(op->ptr, "select_bigger");
diff --git a/source/blender/editors/mesh/bmesh_tools.c b/source/blender/editors/mesh/bmesh_tools.c
index 0a05d1b61e4..daa03d2726f 100644
--- a/source/blender/editors/mesh/bmesh_tools.c
+++ b/source/blender/editors/mesh/bmesh_tools.c
@@ -77,7 +77,7 @@ static int subdivide_exec(bContext *C, wmOperator *op)
{
ToolSettings *ts = CTX_data_tool_settings(C);
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
int cuts = RNA_int_get(op->ptr,"number_cuts");
float smooth = 0.292f * RNA_float_get(op->ptr, "smoothness");
float fractal = RNA_float_get(op->ptr, "fractal")/2.5;
@@ -368,7 +368,7 @@ static short EDBM_Extrude_vert(Object *obedit, BMEditMesh *em, const char hflag,
static int extrude_repeat_mesh(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
RegionView3D *rv3d = CTX_wm_region_view3d(C);
int steps = RNA_int_get(op->ptr,"steps");
@@ -508,7 +508,7 @@ static int mesh_extrude_region_exec(bContext *C, wmOperator *op)
{
Scene *scene = CTX_data_scene(C);
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
EDBM_Extrude_Mesh(scene, obedit, em, op, NULL);
@@ -543,7 +543,7 @@ void MESH_OT_extrude_region(wmOperatorType *ot)
static int mesh_extrude_verts_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
float nor[3];
EDBM_Extrude_verts_indiv(em, op, BM_ELEM_SELECT, nor);
@@ -573,7 +573,7 @@ void MESH_OT_extrude_verts_indiv(wmOperatorType *ot)
static int mesh_extrude_edges_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
float nor[3];
EDBM_Extrude_edges_indiv(em, op, BM_ELEM_SELECT, nor);
@@ -603,7 +603,7 @@ void MESH_OT_extrude_edges_indiv(wmOperatorType *ot)
static int mesh_extrude_faces_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
float nor[3];
EDBM_Extrude_face_indiv(em, op, BM_ELEM_SELECT, nor);
@@ -642,7 +642,7 @@ void EDBM_toggle_select_all(BMEditMesh *em) /* exported for UV */
static int mesh_select_all_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
int action = RNA_enum_get(op->ptr, "action");
switch (action) {
@@ -685,7 +685,7 @@ void MESH_OT_select_all(wmOperatorType *ot)
static int mesh_faces_select_interior_exec(bContext *C, wmOperator *UNUSED(op))
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
if (EDBM_select_interior_faces(em)) {
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit);
@@ -903,7 +903,7 @@ void MESH_OT_dupli_extrude_cursor(wmOperatorType *ot)
static int delete_mesh(bContext *C, Object *obedit, wmOperator *op, int event, Scene *UNUSED(scene))
{
- BMEditMesh *bem = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *bem = BMEdit_FromObject(obedit);
if (event < 1) return OPERATOR_CANCELLED;
@@ -978,7 +978,7 @@ static EnumPropertyItem prop_mesh_delete_types[] = {
static int delete_mesh_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
Scene *scene = CTX_data_scene(C);
int type = RNA_enum_get(op->ptr, "type");
@@ -1027,7 +1027,7 @@ static int addedgeface_mesh_exec(bContext *C, wmOperator *op)
{
BMOperator bmop;
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
if (!EDBM_InitOpf(em, &bmop, op, "contextual_create geom=%hfev", BM_ELEM_SELECT))
return OPERATOR_CANCELLED;
@@ -1066,7 +1066,7 @@ static int editbmesh_mark_seam(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
Mesh *me = ((Mesh *)obedit->data);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMesh *bm = em->bm;
BMEdge *eed;
BMIter iter;
@@ -1120,7 +1120,7 @@ static int editbmesh_mark_sharp(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
Mesh *me = ((Mesh *)obedit->data);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMesh *bm = em->bm;
BMEdge *eed;
BMIter iter;
@@ -1176,7 +1176,7 @@ void MESH_OT_mark_sharp(wmOperatorType *ot)
static int editbmesh_vert_connect(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMesh *bm = em->bm;
BMOperator bmop;
int len = 0;
@@ -1213,7 +1213,7 @@ void MESH_OT_vert_connect(wmOperatorType *ot)
static int editbmesh_edge_split(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMesh *bm = em->bm;
BMOperator bmop;
int len = 0;
@@ -1256,7 +1256,7 @@ void MESH_OT_edge_split(wmOperatorType *ot)
static int mesh_duplicate_exec(bContext *C, wmOperator *op)
{
Object *ob = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
BMOperator bmop;
EDBM_InitOpf(em, &bmop, op, "dupe geom=%hvef", BM_ELEM_SELECT);
@@ -1305,7 +1305,7 @@ void MESH_OT_duplicate(wmOperatorType *ot)
static int flip_normals(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = (((Mesh *)obedit->data))->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
if (!EDBM_CallOpf(em, op, "reversefaces faces=%hf", BM_ELEM_SELECT))
return OPERATOR_CANCELLED;
@@ -1340,7 +1340,7 @@ static const EnumPropertyItem direction_items[] = {
static int edge_rotate_selected(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMOperator bmop;
BMEdge *eed;
BMIter iter;
@@ -1458,7 +1458,7 @@ void EDBM_hide_mesh(BMEditMesh *em, int swap)
static int hide_mesh_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = (((Mesh *)obedit->data))->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
EDBM_hide_mesh(em, RNA_boolean_get(op->ptr, "unselected"));
@@ -1532,7 +1532,7 @@ void EDBM_reveal_mesh(BMEditMesh *em)
static int reveal_mesh_exec(bContext *C, wmOperator *UNUSED(op))
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = (((Mesh *)obedit->data))->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
EDBM_reveal_mesh(em);
@@ -1560,7 +1560,7 @@ void MESH_OT_reveal(wmOperatorType *ot)
static int normals_make_consistent_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
/* doflip has to do with bmesh_rationalize_normals, it's an internal
* thing */
@@ -1598,7 +1598,7 @@ void MESH_OT_normals_make_consistent(wmOperatorType *ot)
static int do_smooth_vertex(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
ModifierData *md;
int mirrx = FALSE, mirry = FALSE, mirrz = FALSE;
int i, repeat;
@@ -1677,7 +1677,7 @@ static int bm_test_exec(bContext *C, wmOperator *UNUSED(op))
Object *obedit = CTX_data_edit_object(C);
ARegion *ar = CTX_wm_region(C);
View3D *v3d = CTX_wm_view3d(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMBVHTree *tree = BMBVH_NewBVH(em, 0, NULL, NULL);
BMIter iter;
BMEdge *e;
@@ -1765,7 +1765,7 @@ static void mesh_set_smooth_faces(BMEditMesh *em, short smooth)
static int mesh_faces_shade_smooth_exec(bContext *C, wmOperator *UNUSED(op))
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
mesh_set_smooth_faces(em, 1);
@@ -1793,7 +1793,7 @@ void MESH_OT_faces_shade_smooth(wmOperatorType *ot)
static int mesh_faces_shade_flat_exec(bContext *C, wmOperator *UNUSED(op))
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
mesh_set_smooth_faces(em, 0);
@@ -1830,7 +1830,7 @@ static const EnumPropertyItem axis_items[] = {
static int mesh_rotate_uvs(bContext *C, wmOperator *op)
{
Object *ob = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
BMOperator bmop;
/* get the direction from RNA */
@@ -1858,7 +1858,7 @@ static int mesh_rotate_uvs(bContext *C, wmOperator *op)
static int mesh_reverse_uvs(bContext *C, wmOperator *op)
{
Object *ob = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
BMOperator bmop;
/* initialize the bmop using EDBM api, which does various ui error reporting and other stuff */
@@ -1883,7 +1883,7 @@ static int mesh_reverse_uvs(bContext *C, wmOperator *op)
static int mesh_rotate_colors(bContext *C, wmOperator *op)
{
Object *ob = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
BMOperator bmop;
/* get the direction from RNA */
@@ -1914,7 +1914,7 @@ static int mesh_rotate_colors(bContext *C, wmOperator *op)
static int mesh_reverse_colors(bContext *C, wmOperator *op)
{
Object *ob = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
BMOperator bmop;
/* initialize the bmop using EDBM api, which does various ui error reporting and other stuff */
@@ -2084,7 +2084,7 @@ static int merge_exec(bContext *C, wmOperator *op)
Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C);
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
int status = 0, uvs = RNA_boolean_get(op->ptr, "uvs");
switch(RNA_enum_get(op->ptr, "type")) {
@@ -2135,7 +2135,7 @@ static EnumPropertyItem *merge_type_itemf(bContext *C, PointerRNA *UNUSED(ptr),
obedit = CTX_data_edit_object(C);
if (obedit && obedit->type == OB_MESH) {
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
if (em->selectmode & SCE_SELECT_VERTEX) {
if (em->bm->selected.first && em->bm->selected.last &&
@@ -2190,7 +2190,7 @@ void MESH_OT_merge(wmOperatorType *ot)
static int removedoublesflag_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMOperator bmop;
int count;
@@ -2254,7 +2254,7 @@ typedef struct PathEdge {
static int select_vertex_path_exec(bContext *C, wmOperator *op)
{
Object *ob = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
BMOperator bmop;
BMEditSelection *sv, *ev;
@@ -2345,7 +2345,7 @@ static int mesh_rip_invoke(bContext *C, wmOperator *op, wmEvent *event)
ARegion *ar = CTX_wm_region(C);
View3D *v3d = CTX_wm_view3d(C);
RegionView3D *rv3d = CTX_wm_region_view3d(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMesh *bm = em->bm;
BMOperator bmop;
BMBVHTree *bvhtree;
@@ -2731,7 +2731,7 @@ void MESH_OT_blend_from_shape(wmOperatorType *ot)
static int select_axis_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMEditSelection *ese = em->bm->selected.last;
int axis = RNA_enum_get(op->ptr, "axis");
int mode = RNA_enum_get(op->ptr, "mode"); /* -1 == aligned, 0 == neg, 1 == pos */
@@ -3068,7 +3068,7 @@ static float bm_edge_seg_isect(BMEdge *e, CutCurve *c, int len, char mode,
static int knife_cut_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = (((Mesh *)obedit->data))->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMesh *bm = em->bm;
ARegion *ar = CTX_wm_region(C);
BMVert *bv;
@@ -3392,7 +3392,7 @@ void MESH_OT_separate(wmOperatorType *ot)
static int fill_mesh_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMOperator bmop;
if (!EDBM_InitOpf(em, &bmop, op, "triangle_fill edges=%he", BM_ELEM_SELECT)) {
@@ -3432,7 +3432,7 @@ void MESH_OT_fill(wmOperatorType *ot)
static int beautify_fill_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
if (!EDBM_CallOpf(em, op, "beautify_fill faces=%hf", BM_ELEM_SELECT))
return OPERATOR_CANCELLED;
@@ -3462,7 +3462,7 @@ void MESH_OT_beautify_fill(wmOperatorType *ot)
static int quads_convert_to_tris_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
if (!EDBM_CallOpf(em, op, "triangulate faces=%hf", BM_ELEM_SELECT))
return OPERATOR_CANCELLED;
@@ -3490,7 +3490,7 @@ void MESH_OT_quads_convert_to_tris(wmOperatorType *ot)
static int tris_convert_to_quads_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
int dosharp, douvs, dovcols, domaterials;
float limit = RNA_float_get(op->ptr, "limit");
@@ -3540,7 +3540,7 @@ void MESH_OT_tris_convert_to_quads(wmOperatorType *ot)
static int dissolve_limited_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
float angle_limit = RNA_float_get(op->ptr, "angle_limit");
if (!EDBM_CallOpf(em, op,
@@ -3580,7 +3580,7 @@ void MESH_OT_dissolve_limited(wmOperatorType *ot)
static int split_mesh_exec(bContext *C, wmOperator *op)
{
Object *ob = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
BMOperator bmop;
EDBM_InitOpf(em, &bmop, op, "split geom=%hvef use_only_faces=%b", BM_ELEM_SELECT, FALSE);
@@ -3620,7 +3620,7 @@ static int spin_mesh_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
ToolSettings *ts = CTX_data_tool_settings(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMesh *bm = em->bm;
BMOperator spinop;
float cent[3], axis[3], imat[3][3];
@@ -3700,7 +3700,7 @@ void MESH_OT_spin(wmOperatorType *ot)
static int screw_mesh_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMesh *bm = em->bm;
BMEdge *eed;
BMVert *eve, *v1, *v2;
@@ -3826,7 +3826,7 @@ void MESH_OT_screw(wmOperatorType *ot)
static int select_by_number_vertices_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMIter iter;
int numverts = RNA_int_get(op->ptr, "number");
@@ -3885,7 +3885,7 @@ void MESH_OT_select_by_number_vertices(wmOperatorType *ot)
static int select_loose_verts_exec(bContext *C, wmOperator *UNUSED(op))
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMVert *eve;
BMEdge *eed;
BMIter iter;
@@ -3930,7 +3930,7 @@ void MESH_OT_select_loose_verts(wmOperatorType *ot)
static int select_mirror_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
int extend = RNA_boolean_get(op->ptr, "extend");
EDBM_select_mirrored(obedit, em, extend);
@@ -4318,7 +4318,7 @@ static void hashvert_flag(EditMesh *em, int flag)
static int mesh_vertices_randomize_exec(bContext *C, wmOperator *UNUSED(op))
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
#if 1 /* BMESH TODO */
(void)em;
#else
@@ -4349,7 +4349,7 @@ void MESH_OT_vertices_randomize(wmOperatorType *ot)
static int mesh_noise_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = (((Mesh *)obedit->data))->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
Material *ma;
Tex *tex;
BMVert *eve;
@@ -4421,7 +4421,7 @@ void MESH_OT_noise(wmOperatorType *ot)
static int mesh_bevel_exec(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = (((Mesh *)obedit->data))->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMIter iter;
BMEdge *eed;
BMOperator bmop;
@@ -4515,7 +4515,7 @@ void MESH_OT_bevel(wmOperatorType *ot)
static int bridge_edge_loops(bContext *C, wmOperator *op)
{
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
if (!EDBM_CallOpf(em, op, "bridge_loops edges=%he", BM_ELEM_SELECT))
return OPERATOR_CANCELLED;
diff --git a/source/blender/editors/mesh/bmesh_utils.c b/source/blender/editors/mesh/bmesh_utils.c
index 830534e3315..892184e94ad 100644
--- a/source/blender/editors/mesh/bmesh_utils.c
+++ b/source/blender/editors/mesh/bmesh_utils.c
@@ -245,7 +245,7 @@ void EDBM_selectmode_to_scene(bContext *C)
{
Scene *scene = CTX_data_scene(C);
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
if (!em)
return;
diff --git a/source/blender/editors/mesh/knifetool.c b/source/blender/editors/mesh/knifetool.c
index 86e02d44de9..3b78ceada98 100644
--- a/source/blender/editors/mesh/knifetool.c
+++ b/source/blender/editors/mesh/knifetool.c
@@ -2051,7 +2051,7 @@ static int knifetool_init(bContext *C, wmOperator *op, int UNUSED(do_cut))
kcd->draw_handle = ED_region_draw_cb_activate(kcd->ar->type, knifetool_draw, kcd, REGION_DRAW_POST_VIEW);
em_setup_viewcontext(C, &kcd->vc);
- kcd->em = ((Mesh *)kcd->ob->data)->edit_btmesh;
+ kcd->em = BMEdit_FromObject(kcd->ob);
BM_mesh_elem_index_ensure(kcd->em->bm, BM_VERT);
@@ -2185,7 +2185,7 @@ static int knifetool_modal (bContext *C, wmOperator *op, wmEvent *event)
}
obedit = CTX_data_edit_object(C);
- if (!obedit || obedit->type != OB_MESH || ((Mesh *)obedit->data)->edit_btmesh != kcd->em) {
+ if (!obedit || obedit->type != OB_MESH || BMEdit_FromObject(obedit) != kcd->em) {
knifetool_exit(C, op);
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/mesh/loopcut.c b/source/blender/editors/mesh/loopcut.c
index 30dedf10618..a82310be926 100644
--- a/source/blender/editors/mesh/loopcut.c
+++ b/source/blender/editors/mesh/loopcut.c
@@ -373,7 +373,7 @@ static int ringsel_init (bContext *C, wmOperator *op, int do_cut)
lcd->ar= CTX_wm_region(C);
lcd->draw_handle= ED_region_draw_cb_activate(lcd->ar->type, ringsel_draw, lcd, REGION_DRAW_POST_VIEW);
lcd->ob = CTX_data_edit_object(C);
- lcd->em= ((Mesh *)lcd->ob->data)->edit_btmesh;
+ lcd->em = BMEdit_FromObject(lcd->ob);
lcd->extend = do_cut ? 0 : RNA_boolean_get(op->ptr, "extend");
lcd->do_cut = do_cut;
diff --git a/source/blender/editors/mesh/mesh_navmesh.c b/source/blender/editors/mesh/mesh_navmesh.c
index 374fbca0659..38d632ffaee 100644
--- a/source/blender/editors/mesh/mesh_navmesh.c
+++ b/source/blender/editors/mesh/mesh_navmesh.c
@@ -321,7 +321,7 @@ static Object* createRepresentation(bContext *C, struct recast_polyMesh *pmesh,
}
ED_object_enter_editmode(C, EM_DO_UNDO|EM_IGNORE_LAYER);
- em= (((Mesh *)obedit->data))->edit_btmesh;
+ em = BMEdit_FromObject(obedit);
if(!createob) {
/* clear */
@@ -483,8 +483,8 @@ void MESH_OT_navmesh_make(wmOperatorType *ot)
static int navmesh_face_copy_exec(bContext *C, wmOperator *op)
{
- Object *obedit= CTX_data_edit_object(C);
- BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh;
+ Object *obedit = CTX_data_edit_object(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
/* do work here */
BMFace *efa_act= BM_active_face_get(em->bm, FALSE);
@@ -571,8 +571,8 @@ static int findFreeNavPolyIndex(BMEditMesh* em)
static int navmesh_face_add_exec(bContext *C, wmOperator *UNUSED(op))
{
- Object *obedit= CTX_data_edit_object(C);
- BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh;
+ Object *obedit = CTX_data_edit_object(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *ef;
BMIter iter;
diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c
index 4b4083751e7..1c38a9d3cd3 100644
--- a/source/blender/editors/mesh/mesh_ops.c
+++ b/source/blender/editors/mesh/mesh_ops.c
@@ -174,7 +174,7 @@ static int ED_operator_editmesh_face_select(bContext *C)
{
Object *obedit= CTX_data_edit_object(C);
if(obedit && obedit->type==OB_MESH) {
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
if (em && em->selectmode & SCE_SELECT_FACE) {
return 1;
}
diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c
index c2ecf78de5d..f610d758243 100644
--- a/source/blender/editors/object/object_vgroup.c
+++ b/source/blender/editors/object/object_vgroup.c
@@ -92,7 +92,7 @@ static Lattice *vgroup_edit_lattice(Object *ob)
int ED_vgroup_object_is_edit_mode(Object *ob)
{
if(ob->type == OB_MESH)
- return (((Mesh*)ob->data)->edit_btmesh != NULL);
+ return (BMEdit_FromObject(ob) != NULL);
else if(ob->type == OB_LATTICE)
return (((Lattice*)ob->data)->editlatt != NULL);
@@ -1257,11 +1257,12 @@ static void vgroup_blend(Object *ob)
int i, dvert_tot=0;
const int def_nr= ob->actdef-1;
- BMEditMesh *em= ((Mesh *)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
// ED_vgroup_give_array(ob->data, &dvert_array, &dvert_tot);
- if (em==NULL)
+ if (em == NULL) {
return;
+ }
if (BLI_findlink(&ob->defbase, def_nr)) {
BMEdge *eed;
@@ -1880,7 +1881,7 @@ static void vgroup_delete_edit_mode(Object *ob, bDeformGroup *dg)
static int vgroup_object_in_edit_mode(Object *ob)
{
if(ob->type == OB_MESH)
- return (((Mesh*)ob->data)->edit_btmesh != NULL);
+ return (BMEdit_FromObject(ob) != NULL);
else if(ob->type == OB_LATTICE)
return (((Lattice*)ob->data)->editlatt != NULL);
@@ -2773,7 +2774,7 @@ static int vgroup_do_remap(Object *ob, char *name_array, wmOperator *op)
if(ob->mode == OB_MODE_EDIT) {
if(ob->type==OB_MESH) {
- BMEditMesh *em = ((Mesh*)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
BMIter iter;
BMVert *eve;
diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c
index 3a65d701b58..b98eb330e42 100644
--- a/source/blender/editors/render/render_shading.c
+++ b/source/blender/editors/render/render_shading.c
@@ -165,7 +165,7 @@ static int material_slot_assign_exec(bContext *C, wmOperator *UNUSED(op))
if(ob && ob->actcol>0) {
if(ob->type == OB_MESH) {
- BMEditMesh *em= ((Mesh*)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
BMFace *efa;
BMIter iter;
@@ -220,13 +220,13 @@ void OBJECT_OT_material_slot_assign(wmOperatorType *ot)
static int material_slot_de_select(bContext *C, int select)
{
- Object *ob= ED_object_context(C);
+ Object *ob = ED_object_context(C);
if(!ob)
return OPERATOR_CANCELLED;
if(ob->type == OB_MESH) {
- BMEditMesh *em= ((Mesh*)ob->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(ob);
if(em) {
EDBM_deselect_by_material(em, ob->actcol-1, select);
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 039b1c2f866..8818bd66b23 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -315,7 +315,7 @@ int ED_operator_editmesh(bContext *C)
{
Object *obedit= CTX_data_edit_object(C);
if(obedit && obedit->type==OB_MESH)
- return NULL != ((Mesh *)obedit->data)->edit_btmesh;
+ return NULL != BMEdit_FromObject(obedit);
return 0;
}
@@ -367,17 +367,18 @@ int ED_operator_uvedit(bContext *C)
int ED_operator_uvmap(bContext *C)
{
- Object *obedit= CTX_data_edit_object(C);
- BMEditMesh *em= NULL;
+ Object *obedit = CTX_data_edit_object(C);
+ BMEditMesh *em = NULL;
- if(obedit && obedit->type==OB_MESH)
- em= ((Mesh *)obedit->data)->edit_btmesh;
+ if(obedit && obedit->type == OB_MESH) {
+ em = BMEdit_FromObject(obedit);
+ }
if(em && (em->bm->totface)) {
- return 1;
+ return TRUE;
}
- return 0;
+ return FALSE;
}
int ED_operator_editsurfcurve(bContext *C)
diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c
index 725b2a584ba..63e976693e3 100644
--- a/source/blender/editors/sculpt_paint/paint_image.c
+++ b/source/blender/editors/sculpt_paint/paint_image.c
@@ -4661,7 +4661,7 @@ static int uv_sculpt_brush_poll(bContext *C)
if(!uv_sculpt_brush(C) || !obedit || obedit->type != OB_MESH)
return 0;
- em = ((Mesh *)obedit->data)->edit_btmesh;
+ em = BMEdit_FromObject(obedit);
ret = EDBM_texFaceCheck(em);
if(ret && sima) {
diff --git a/source/blender/editors/sculpt_paint/sculpt_uv.c b/source/blender/editors/sculpt_paint/sculpt_uv.c
index 9bdb151d55d..f0aedae88ac 100644
--- a/source/blender/editors/sculpt_paint/sculpt_uv.c
+++ b/source/blender/editors/sculpt_paint/sculpt_uv.c
@@ -299,7 +299,7 @@ static void uv_sculpt_stroke_apply(bContext *C, wmOperator *op, wmEvent *event,
float co[2], radius, radius_root;
Scene *scene = CTX_data_scene(C);
ARegion *ar = CTX_wm_region(C);
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
unsigned int tool;
UvSculptData *sculptdata = (UvSculptData *)op->customdata;
SpaceImage *sima;
@@ -471,7 +471,7 @@ static UvSculptData *uv_sculpt_stroke_init(bContext *C, wmOperator *op, wmEvent
Object *obedit = CTX_data_edit_object(C);
ToolSettings *ts = scene->toolsettings;
UvSculptData *data = MEM_callocN(sizeof(*data), "UV Smooth Brush Data");
- BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMesh *bm = em->bm;
op->customdata = data;
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c
index ce7338ced13..7abc0c6ea71 100644
--- a/source/blender/editors/space_image/space_image.c
+++ b/source/blender/editors/space_image/space_image.c
@@ -276,7 +276,7 @@ int ED_space_image_show_uvedit(SpaceImage *sima, Object *obedit)
return 0;
if(obedit && obedit->type == OB_MESH) {
- struct BMEditMesh *em = ((Mesh*)obedit->data)->edit_btmesh;
+ struct BMEditMesh *em = BMEdit_FromObject(obedit);
int ret;
ret = EDBM_texFaceCheck(em);
@@ -294,7 +294,7 @@ int ED_space_image_show_uvshadow(SpaceImage *sima, Object *obedit)
if(ED_space_image_show_paint(sima))
if(obedit && obedit->type == OB_MESH) {
- struct BMEditMesh *em = ((Mesh*)obedit->data)->edit_btmesh;
+ struct BMEditMesh *em = BMEdit_FromObject(obedit);
int ret;
ret = EDBM_texFaceCheck(em);
diff --git a/source/blender/editors/space_info/info_stats.c b/source/blender/editors/space_info/info_stats.c
index cf003d8c1eb..120783db340 100644
--- a/source/blender/editors/space_info/info_stats.c
+++ b/source/blender/editors/space_info/info_stats.c
@@ -140,7 +140,7 @@ static void stats_object(Object *ob, int sel, int totob, SceneStats *stats)
static void stats_object_edit(Object *obedit, SceneStats *stats)
{
if(obedit->type==OB_MESH) {
- BMEditMesh *em = ((Mesh*)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
stats->totvert = em->bm->totvert;
stats->totvertsel = em->bm->totvertsel;
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c
index 29ef1f1b617..f80bd6c3807 100644
--- a/source/blender/editors/space_view3d/view3d_header.c
+++ b/source/blender/editors/space_view3d/view3d_header.c
@@ -333,17 +333,17 @@ static char *view3d_modeselect_pup(Scene *scene)
static void do_view3d_header_buttons(bContext *C, void *UNUSED(arg), int event)
{
- wmWindow *win= CTX_wm_window(C);
- ToolSettings *ts= CTX_data_tool_settings(C);
- ScrArea *sa= CTX_wm_area(C);
- View3D *v3d= sa->spacedata.first;
+ wmWindow *win = CTX_wm_window(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
+ ScrArea *sa = CTX_wm_area(C);
+ View3D *v3d = sa->spacedata.first;
Object *obedit = CTX_data_edit_object(C);
- BMEditMesh *em= NULL;
- int ctrl= win->eventstate->ctrl, shift= win->eventstate->shift;
+ BMEditMesh *em = NULL;
+ int ctrl = win->eventstate->ctrl, shift= win->eventstate->shift;
PointerRNA props_ptr;
- if (obedit && obedit->type==OB_MESH) {
- em= ((Mesh *)obedit->data)->edit_btmesh;
+ if (obedit && obedit->type == OB_MESH) {
+ em = BMEdit_FromObject(obedit);
}
/* watch it: if sa->win does not exist, check that when calling direct drawing routines */
@@ -449,7 +449,7 @@ void uiTemplateEditModeSelection(uiLayout *layout, struct bContext *C)
uiBlockSetHandleFunc(block, do_view3d_header_buttons, NULL);
if (obedit && (obedit->type == OB_MESH)) {
- BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
uiLayout *row;
row= uiLayoutRow(layout, 1);
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index dfd8b4a3568..a5c7e21e3b4 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -516,7 +516,7 @@ static void do_lasso_select_mesh(ViewContext *vc, int mcords[][2], short moves,
lasso_select_boundbox(&rect, mcords, moves);
/* set editmesh */
- vc->em= ((Mesh *)vc->obedit->data)->edit_btmesh;
+ vc->em = BMEdit_FromObject(vc->obedit);
data.vc= vc;
data.rect = &rect;
@@ -2073,7 +2073,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
if (vc.obedit) {
switch(vc.obedit->type) {
case OB_MESH:
- vc.em= ((Mesh *)vc.obedit->data)->edit_btmesh;
+ vc.em = BMEdit_FromObject(vc.obedit);
ret= do_mesh_box_select(&vc, &rect, select, extend);
// if (EM_texFaceCheck())
if (ret & OPERATOR_FINISHED) {
@@ -2336,7 +2336,7 @@ static void mesh_circle_select(ViewContext *vc, int select, const int mval[2], f
bbsel= EDBM_init_backbuf_circle(vc, mval[0], mval[1], (short)(rad+1.0));
ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */
- vc->em= ((Mesh *)vc->obedit->data)->edit_btmesh;
+ vc->em = BMEdit_FromObject(vc->obedit);
data.vc = vc;
data.select = select;
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index eabd3181aa2..1b4a75f80e8 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -303,7 +303,7 @@ static void createTransTexspace(TransInfo *t)
static void createTransEdge(TransInfo *t)
{
- BMEditMesh *em = ((Mesh *)t->obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(t->obedit);
TransData *td = NULL;
BMEdge *eed;
BMIter iter;
@@ -2022,7 +2022,7 @@ static void createTransEditVerts(bContext *C, TransInfo *t)
{
ToolSettings *ts = CTX_data_tool_settings(C);
TransData *tob = NULL;
- BMEditMesh *em = ((Mesh *)t->obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(t->obedit);
BMesh *bm = em->bm;
BMVert *eve;
BMIter iter;
@@ -2442,7 +2442,7 @@ static void createTransUVs(bContext *C, TransInfo *t)
TransData2D *td2d = NULL;
MTexPoly *tf;
MLoopUV *luv;
- BMEditMesh *em = ((Mesh *)t->obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(t->obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -5145,7 +5145,7 @@ void special_aftertrans_update(bContext *C, TransInfo *t)
else if (t->obedit) {
if (t->obedit->type == OB_MESH)
{
- BMEditMesh *em = ((Mesh *)t->obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(t->obedit);
/* table needs to be created for each edit command, since vertices can move etc */
mesh_octree_table(t->obedit, em, NULL, 'e');
}
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index efe4bac3d3f..2f349ae6f2a 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -714,7 +714,7 @@ static void recalcData_view3d(TransInfo *t)
if(la->editlatt->latt->flag & LT_OUTSIDE) outside_lattice(la->editlatt->latt);
}
else if (t->obedit->type == OB_MESH) {
- BMEditMesh *em = ((Mesh*)t->obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(t->obedit);
/* mirror modifier clipping? */
if(t->state != TRANS_CANCEL) {
/* apply clipping after so we never project past the clip plane [#25423] */
@@ -1540,7 +1540,7 @@ void calculateCenter(TransInfo *t)
if (t->obedit) {
if (t->obedit && t->obedit->type == OB_MESH) {
BMEditSelection ese;
- BMEditMesh *em = ((Mesh*)t->obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(t->obedit);
if (EDBM_get_actSelection(em, &ese)) {
EDBM_editselection_center(em, t->center, &ese);
diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c
index bd687ddfe40..296fea75317 100644
--- a/source/blender/editors/transform/transform_manipulator.c
+++ b/source/blender/editors/transform/transform_manipulator.c
@@ -299,7 +299,7 @@ int calc_manipulator_stats(const bContext *C)
if((ob->lay & v3d->lay)==0) return 0;
if(obedit->type==OB_MESH) {
- BMEditMesh *em = ((Mesh*)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMEditSelection ese;
float vec[3]= {0,0,0};
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index b36670bafa5..c17667cd639 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -1650,7 +1650,7 @@ static int snapObject(Scene *scene, ARegion *ar, Object *ob, int editobject, flo
if (editobject)
{
- em = ((Mesh *)ob->data)->edit_btmesh;
+ em = BMEdit_FromObject(ob);
/* dm = editbmesh_get_derived_cage(scene, ob, em, CD_MASK_BAREMESH); */
dm = editbmesh_get_derived_base(ob, em); /* limitation, em & dm MUST have the same number of faces */
}
@@ -1976,7 +1976,7 @@ static int peelObjects(Scene *scene, View3D *v3d, ARegion *ar, Object *obedit, L
}
else
{
- em = ((Mesh *)ob->data)->edit_btmesh;
+ em = BMEdit_FromObject(ob);
dm = editbmesh_get_derived_cage(scene, obedit, em, CD_MASK_BAREMESH);
val = peelDerivedMesh(ob, dm, ob->obmat, ray_start, ray_normal, mval, depth_peels);
diff --git a/source/blender/editors/uvedit/uvedit_buttons.c b/source/blender/editors/uvedit/uvedit_buttons.c
index 20ff8b07bc6..a45a3555b51 100644
--- a/source/blender/editors/uvedit/uvedit_buttons.c
+++ b/source/blender/editors/uvedit/uvedit_buttons.c
@@ -112,17 +112,17 @@ static float uvedit_old_center[2];
static void uvedit_vertex_buttons(const bContext *C, uiBlock *block)
{
- SpaceImage *sima= CTX_wm_space_image(C);
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- Image *ima= sima->image;
+ SpaceImage *sima = CTX_wm_space_image(C);
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ Image *ima = sima->image;
BMEditMesh *em;
float center[2];
int imx, imy, step, digits;
ED_space_image_size(sima, &imx, &imy);
- em= ((Mesh *)obedit->data)->edit_btmesh;
+ em = BMEdit_FromObject(obedit);
if(uvedit_center(scene, em, ima, center)) {
copy_v2_v2(uvedit_old_center, center);
@@ -161,7 +161,7 @@ static void do_uvedit_vertex(bContext *C, void *UNUSED(arg), int event)
if(event != B_UVEDIT_VERTEX)
return;
- em= ((Mesh *)obedit->data)->edit_btmesh;
+ em = BMEdit_FromObject(obedit);
ED_space_image_size(sima, &imx, &imy);
uvedit_center(scene, em, ima, center);
diff --git a/source/blender/editors/uvedit/uvedit_draw.c b/source/blender/editors/uvedit/uvedit_draw.c
index ef09ec3c3e8..db71f74b8e1 100644
--- a/source/blender/editors/uvedit/uvedit_draw.c
+++ b/source/blender/editors/uvedit/uvedit_draw.c
@@ -132,7 +132,7 @@ static void draw_uvs_shadow(Object *obedit)
BMIter iter, liter;
MLoopUV *luv;
- em= ((Mesh*)obedit->data)->edit_btmesh;
+ em = BMEdit_FromObject(obedit);
/* draws the grey mesh when painting */
glColor3ub(112, 112, 112);
diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c
index eb7373c226d..42e6ec39e46 100644
--- a/source/blender/editors/uvedit/uvedit_ops.c
+++ b/source/blender/editors/uvedit/uvedit_ops.c
@@ -97,7 +97,7 @@ int ED_uvedit_test(Object *obedit)
if(obedit->type != OB_MESH)
return 0;
- em = ((Mesh*)obedit->data)->edit_btmesh;
+ em = BMEdit_FromObject(obedit);
ret = EDBM_texFaceCheck(em);
return ret;
@@ -180,7 +180,7 @@ void ED_uvedit_assign_image(Main *bmain, Scene *scene, Object *obedit, Image *im
if(!obedit || (obedit->type != OB_MESH))
return;
- em= ((Mesh*)obedit->data)->edit_btmesh;
+ em = BMEdit_FromObject(obedit);
if(!em || !em->bm->totface) {
return;
}
@@ -249,7 +249,7 @@ static int uvedit_set_tile(Object *obedit, Image *ima, int curtile)
if(ima->type==IMA_TYPE_R_RESULT || ima->type==IMA_TYPE_COMPOSITE)
return 0;
- em= ((Mesh*)obedit->data)->edit_btmesh;
+ em = BMEdit_FromObject(obedit);
BM_ITER(efa, &iter, em->bm, BM_FACES_OF_MESH, NULL) {
tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
@@ -586,7 +586,7 @@ void uv_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float aspy)
int ED_uvedit_minmax(Scene *scene, Image *ima, Object *obedit, float *min, float *max)
{
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -616,7 +616,7 @@ int ED_uvedit_minmax(Scene *scene, Image *ima, Object *obedit, float *min, float
static int ED_uvedit_median(Scene *scene, Image *ima, Object *obedit, float co[3])
{
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -868,7 +868,7 @@ void uv_find_nearest_vert(Scene *scene, Image *ima, BMEditMesh *em,
int ED_uvedit_nearest_uv(Scene *scene, Object *obedit, Image *ima, float co[2], float uv[2])
{
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -1339,11 +1339,11 @@ static void weld_align_uv(bContext *C, int tool)
MLoopUV *luv;
float cent[2], min[2], max[2];
- scene= CTX_data_scene(C);
- obedit= CTX_data_edit_object(C);
- em= ((Mesh*)obedit->data)->edit_btmesh;
- ima= CTX_data_edit_image(C);
- sima= CTX_wm_space_image(C);
+ scene = CTX_data_scene(C);
+ obedit = CTX_data_edit_object(C);
+ em = BMEdit_FromObject(obedit);
+ ima = CTX_data_edit_image(C);
+ sima = CTX_wm_space_image(C);
INIT_MINMAX2(min, max);
@@ -1606,17 +1606,17 @@ static void select_all_perform(bContext *C, int action)
MTexPoly *tf;
MLoopUV *luv;
- scene= CTX_data_scene(C);
- ts= CTX_data_tool_settings(C);
- obedit= CTX_data_edit_object(C);
- em= ((Mesh*)obedit->data)->edit_btmesh;
- ima= CTX_data_edit_image(C);
+ scene = CTX_data_scene(C);
+ ts = CTX_data_tool_settings(C);
+ obedit = CTX_data_edit_object(C);
+ em = BMEdit_FromObject(obedit);
+ ima = CTX_data_edit_image(C);
if(ts->uv_flag & UV_SYNC_SELECTION) {
switch (action) {
case SEL_TOGGLE:
- EDBM_toggle_select_all(((Mesh*)obedit->data)->edit_btmesh);
+ EDBM_toggle_select_all(BMEdit_FromObject(obedit));
break;
case SEL_SELECT:
EDBM_flag_enable_all(em, BM_ELEM_SELECT);
@@ -1729,12 +1729,12 @@ static int sticky_select(float *limit, int hitv[4], int v, float *hituv[4], floa
static int mouse_select(bContext *C, float co[2], int extend, int loop)
{
- SpaceImage *sima= CTX_wm_space_image(C);
- Scene *scene= CTX_data_scene(C);
- ToolSettings *ts= CTX_data_tool_settings(C);
- Object *obedit= CTX_data_edit_object(C);
- Image *ima= CTX_data_edit_image(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ SpaceImage *sima = CTX_wm_space_image(C);
+ Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
+ Object *obedit = CTX_data_edit_object(C);
+ Image *ima = CTX_data_edit_image(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -2115,12 +2115,12 @@ static void UV_OT_select_loop(wmOperatorType *ot)
static int select_linked_internal(bContext *C, wmOperator *op, wmEvent *event, int pick)
{
- SpaceImage *sima= CTX_wm_space_image(C);
- Scene *scene= CTX_data_scene(C);
- ToolSettings *ts= CTX_data_tool_settings(C);
- Object *obedit= CTX_data_edit_object(C);
- Image *ima= CTX_data_edit_image(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ SpaceImage *sima = CTX_wm_space_image(C);
+ Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
+ Object *obedit = CTX_data_edit_object(C);
+ Image *ima = CTX_data_edit_image(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
float limit[2];
int extend;
@@ -2218,11 +2218,11 @@ static void UV_OT_select_linked_pick(wmOperatorType *ot)
static int unlink_selection_exec(bContext *C, wmOperator *op)
{
- Scene *scene= CTX_data_scene(C);
- ToolSettings *ts= CTX_data_tool_settings(C);
- Object *obedit= CTX_data_edit_object(C);
- Image *ima= CTX_data_edit_image(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
+ Object *obedit = CTX_data_edit_object(C);
+ Image *ima = CTX_data_edit_image(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -2294,8 +2294,8 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje
* This only needs to be done when the Mesh is not used for
* selection (so for sticky modes, vertex or location based). */
- ToolSettings *ts= CTX_data_tool_settings(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ ToolSettings *ts = CTX_data_tool_settings(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -2416,13 +2416,13 @@ static void uv_faces_do_sticky(bContext *C, SpaceImage *sima, Scene *scene, Obje
static int border_select_exec(bContext *C, wmOperator *op)
{
- SpaceImage *sima= CTX_wm_space_image(C);
- Scene *scene= CTX_data_scene(C);
- ToolSettings *ts= CTX_data_tool_settings(C);
- Object *obedit= CTX_data_edit_object(C);
- Image *ima= CTX_data_edit_image(C);
- ARegion *ar= CTX_wm_region(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ SpaceImage *sima = CTX_wm_space_image(C);
+ Scene *scene = CTX_data_scene(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
+ Object *obedit = CTX_data_edit_object(C);
+ Image *ima = CTX_data_edit_image(C);
+ ARegion *ar = CTX_wm_region(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -2573,11 +2573,11 @@ static void select_uv_inside_ellipse(BMEditMesh *em, SpaceImage *UNUSED(sima), S
static int circle_select_exec(bContext *C, wmOperator *op)
{
- SpaceImage *sima= CTX_wm_space_image(C);
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
- ARegion *ar= CTX_wm_region(C);
+ SpaceImage *sima = CTX_wm_space_image(C);
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
+ ARegion *ar = CTX_wm_region(C);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -2715,7 +2715,7 @@ static void UV_OT_snap_cursor(wmOperatorType *ot)
static int snap_uvs_to_cursor(Scene *scene, Image *ima, Object *obedit, SpaceImage *sima)
{
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -2742,7 +2742,7 @@ static int snap_uvs_to_cursor(Scene *scene, Image *ima, Object *obedit, SpaceIma
static int snap_uvs_to_adjacent_unselected(Scene *scene, Image *ima, Object *obedit)
{
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -2839,14 +2839,14 @@ static int snap_uvs_to_adjacent_unselected(Scene *scene, Image *ima, Object *obe
static int snap_uvs_to_pixels(SpaceImage *sima, Scene *scene, Object *obedit)
{
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
- Image *ima= sima->image;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
+ Image *ima = sima->image;
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
MTexPoly *tface;
MLoopUV *luv;
- int width= 0, height= 0;
+ int width = 0, height = 0;
float w, h;
short change = 0;
@@ -2928,16 +2928,16 @@ static void UV_OT_snap_selected(wmOperatorType *ot)
static int pin_exec(bContext *C, wmOperator *op)
{
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- Image *ima= CTX_data_edit_image(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ Image *ima = CTX_data_edit_image(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
MTexPoly *tface;
MLoopUV *luv;
- int clear= RNA_boolean_get(op->ptr, "clear");
+ int clear = RNA_boolean_get(op->ptr, "clear");
BM_ITER(efa, &iter, em->bm, BM_FACES_OF_MESH, NULL) {
tface= CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
@@ -2982,10 +2982,10 @@ static void UV_OT_pin(wmOperatorType *ot)
static int select_pinned_exec(bContext *C, wmOperator *UNUSED(op))
{
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- Image *ima= CTX_data_edit_image(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ Image *ima = CTX_data_edit_image(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -3027,16 +3027,16 @@ static void UV_OT_select_pinned(wmOperatorType *ot)
static int hide_exec(bContext *C, wmOperator *op)
{
- SpaceImage *sima= CTX_wm_space_image(C);
- ToolSettings *ts= CTX_data_tool_settings(C);
- Object *obedit= CTX_data_edit_object(C);
+ SpaceImage *sima = CTX_wm_space_image(C);
+ ToolSettings *ts = CTX_data_tool_settings(C);
+ Object *obedit = CTX_data_edit_object(C);
Scene *scene = CTX_data_scene(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
MLoopUV *luv;
- int swap= RNA_boolean_get(op->ptr, "unselected");
+ int swap = RNA_boolean_get(op->ptr, "unselected");
int facemode= sima ? sima->flag & SI_SELACTFACE : 0;
if(ts->uv_flag & UV_SYNC_SELECTION) {
@@ -3127,7 +3127,7 @@ static int reveal_exec(bContext *C, wmOperator *UNUSED(op))
ToolSettings *ts= CTX_data_tool_settings(C);
Object *obedit= CTX_data_edit_object(C);
/*Scene *scene = CTX_data_scene(C);*/ /*UNUSED*/
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
diff --git a/source/blender/editors/uvedit/uvedit_smart_stitch.c b/source/blender/editors/uvedit/uvedit_smart_stitch.c
index 42d8beb22cc..6196e684842 100644
--- a/source/blender/editors/uvedit/uvedit_smart_stitch.c
+++ b/source/blender/editors/uvedit/uvedit_smart_stitch.c
@@ -985,7 +985,7 @@ static int stitch_init(bContext *C, wmOperator *op)
/* initialize state */
state->use_limit = RNA_boolean_get(op->ptr, "use_limit");
state->limit_dist = RNA_float_get(op->ptr, "limit");
- state->em = em = ((Mesh *)obedit->data)->edit_btmesh;
+ state->em = em = BMEdit_FromObject(obedit);
state->snap_islands = RNA_boolean_get(op->ptr, "snap_islands");
state->static_island = RNA_int_get(op->ptr, "static_island");
state->midpoints = RNA_boolean_get(op->ptr, "midpoint_snap");
diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
index b4f7eda8ccb..56d088577b6 100644
--- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c
+++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
@@ -88,8 +88,8 @@
static int ED_uvedit_ensure_uvs(bContext *C, Scene *scene, Object *obedit)
{
- Main *bmain= CTX_data_main(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ Main *bmain = CTX_data_main(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMIter iter;
Image *ima;
@@ -509,12 +509,12 @@ typedef struct MinStretch {
static int minimize_stretch_init(bContext *C, wmOperator *op)
{
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
MinStretch *ms;
- int fill_holes= RNA_boolean_get(op->ptr, "fill_holes");
- short implicit= 1;
+ int fill_holes = RNA_boolean_get(op->ptr, "fill_holes");
+ short implicit = 1;
if(!uvedit_have_selection(scene, em, implicit)) {
return 0;
@@ -706,11 +706,11 @@ void UV_OT_minimize_stretch(wmOperatorType *ot)
static int pack_islands_exec(bContext *C, wmOperator *op)
{
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
ParamHandle *handle;
- short implicit= 1;
+ short implicit = 1;
if(!uvedit_have_selection(scene, em, implicit)) {
return OPERATOR_CANCELLED;
@@ -753,11 +753,11 @@ void UV_OT_pack_islands(wmOperatorType *ot)
static int average_islands_scale_exec(bContext *C, wmOperator *UNUSED(op))
{
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
ParamHandle *handle;
- short implicit= 1;
+ short implicit = 1;
if(!uvedit_have_selection(scene, em, implicit)) {
return OPERATOR_CANCELLED;
@@ -792,7 +792,7 @@ static ParamHandle *liveHandle = NULL;
void ED_uvedit_live_unwrap_begin(Scene *scene, Object *obedit)
{
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
short abf = scene->toolsettings->unwrapper == 0;
short fillholes = scene->toolsettings->uvcalc_flag & UVCALC_FILLHOLES;
short use_subsurf = scene->toolsettings->uvcalc_flag & UVCALC_USESUBSURF;
@@ -930,11 +930,11 @@ static void uv_map_rotation_matrix(float result[][4], RegionView3D *rv3d, Object
static void uv_map_transform(bContext *C, wmOperator *op, float center[3], float rotmat[4][4])
{
/* context checks are messy here, making it work in both 3d view and uv editor */
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
- View3D *v3d= CTX_wm_view3d(C);
- RegionView3D *rv3d= CTX_wm_region_view3d(C);
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
+ View3D *v3d = CTX_wm_view3d(C);
+ RegionView3D *rv3d = CTX_wm_region_view3d(C);
/* common operator properties */
int align= RNA_enum_get(op->ptr, "align");
int direction= RNA_enum_get(op->ptr, "direction");
@@ -1112,7 +1112,7 @@ static void uv_map_clip_correct(BMEditMesh *em, wmOperator *op)
/* assumes UV Map is checked, doesn't run update funcs */
void ED_unwrap_lscm(Scene *scene, Object *obedit, const short sel)
{
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
ParamHandle *handle;
const short fill_holes= scene->toolsettings->uvcalc_flag & UVCALC_FILLHOLES;
@@ -1137,9 +1137,9 @@ void ED_unwrap_lscm(Scene *scene, Object *obedit, const short sel)
static int unwrap_exec(bContext *C, wmOperator *op)
{
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
int method = RNA_enum_get(op->ptr, "method");
int fill_holes = RNA_boolean_get(op->ptr, "fill_holes");
int correct_aspect = RNA_boolean_get(op->ptr, "correct_aspect");
@@ -1217,13 +1217,13 @@ void UV_OT_unwrap(wmOperatorType *ot)
/**************** Project From View operator **************/
static int uv_from_view_exec(bContext *C, wmOperator *op)
{
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- Camera *camera= NULL;
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ Camera *camera = NULL;
+ BMEditMesh *em = BMEdit_FromObject(obedit);
ARegion *ar = CTX_wm_region(C);
- View3D *v3d= CTX_wm_view3d(C);
- RegionView3D *rv3d= CTX_wm_region_view3d(C);
+ View3D *v3d = CTX_wm_view3d(C);
+ RegionView3D *rv3d = CTX_wm_region_view3d(C);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -1403,9 +1403,9 @@ static void uv_map_mirror(BMEditMesh *em, BMFace *efa, MTexPoly *UNUSED(tf))
static int sphere_project_exec(bContext *C, wmOperator *op)
{
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -1476,9 +1476,9 @@ static void uv_cylinder_project(float target[2], float source[3], float center[3
static int cylinder_project_exec(bContext *C, wmOperator *op)
{
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;
@@ -1535,9 +1535,9 @@ void UV_OT_cylinder_project(wmOperatorType *ot)
static int cube_project_exec(bContext *C, wmOperator *op)
{
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
+ Scene *scene = CTX_data_scene(C);
+ Object *obedit = CTX_data_edit_object(C);
+ BMEditMesh *em = BMEdit_FromObject(obedit);
BMFace *efa;
BMLoop *l;
BMIter iter, liter;