[Bf-blender-cvs] [6daa6acdf16] soc-2016-pbvh-painting: Cleanup: move WPaintData, VPaintData, WeightPaintInfo back into paint_vertex.c
Campbell Barton
noreply at git.blender.org
Mon Apr 10 07:19:19 CEST 2017
Commit: 6daa6acdf16e25bd6cda8b8cd32fe221455f1881
Author: Campbell Barton
Date: Mon Apr 10 13:57:26 2017 +1000
Branches: soc-2016-pbvh-painting
https://developer.blender.org/rB6daa6acdf16e25bd6cda8b8cd32fe221455f1881
Cleanup: move WPaintData, VPaintData, WeightPaintInfo back into paint_vertex.c
There is no reason to make these public
Revert allocated ViewContext, its no longer needed.
===================================================================
M source/blender/editors/sculpt_paint/paint_intern.h
M source/blender/editors/sculpt_paint/paint_vertex.c
===================================================================
diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h
index 56f7b3db48e..f91a6baf6a9 100644
--- a/source/blender/editors/sculpt_paint/paint_intern.h
+++ b/source/blender/editors/sculpt_paint/paint_intern.h
@@ -91,104 +91,7 @@ void paint_cursor_start(struct bContext *C, int (*poll)(struct bContext *C));
void paint_cursor_start_explicit(struct Paint *p, struct wmWindowManager *wm, int (*poll)(struct bContext *C));
void paint_cursor_delete_textures(void);
-/**
-* Variables stored both for 'active' and 'mirror' sides.
-*/
-struct WeightPaintGroupData {
- /** index of active group or its mirror
- *
- * - 'active' is always `ob->actdef`.
- * - 'mirror' is -1 when 'ME_EDIT_MIRROR_X' flag id disabled,
- * otherwise this will be set to the mirror or the active group (if the group isn't mirrored).
- */
- int index;
- /** lock that includes the 'index' as locked too
- *
- * - 'active' is set of locked or active/selected groups
- * - 'mirror' is set of locked or mirror groups
- */
- const bool *lock;
-};
-
-/* struct to avoid passing many args each call to do_weight_paint_vertex()
- * this _could_ be made a part of the operators 'WPaintData' struct, or at
- * least a member, but for now keep its own struct, initialized on every
- * paint stroke update - campbell */
-typedef struct WeightPaintInfo {
-
- int defbase_tot;
-
- /* both must add up to 'defbase_tot' */
- int defbase_tot_sel;
- int defbase_tot_unsel;
-
- struct WeightPaintGroupData active, mirror;
-
- const bool *lock_flags; /* boolean array for locked bones,
- * length of defbase_tot */
- const bool *defbase_sel; /* boolean array for selected bones,
- * length of defbase_tot, cant be const because of how its passed */
-
- const bool *vgroup_validmap; /* same as WeightPaintData.vgroup_validmap,
- * only added here for convenience */
-
- bool do_flip;
- bool do_multipaint;
- bool do_auto_normalize;
-
- float brush_alpha_value; /* result of BKE_brush_alpha_get() */
-} WeightPaintInfo;
-
/* paint_vertex.c */
-typedef struct VPaintData {
- struct ViewContext *vc;
- unsigned int paintcol;
-
- struct VertProjHandle *vp_handle;
- struct DMCoNo *vertexcosnos;
-
- float vpimat[3][3];
-
- /* modify 'me->mcol' directly, since the derived mesh is drawing from this
- * array, otherwise we need to refresh the modifier stack */
- bool use_fast_update;
-
- /* loops tagged as having been painted, to apply shared vertex color
- * blending only to modified loops */
- bool *mlooptag;
-
- bool is_texbrush;
-} VPaintData;
-
-typedef struct WPaintData {
- struct ViewContext *vc;
-
- struct WeightPaintGroupData active, mirror;
-
- void *vp_handle;
- struct DMCoNo *vertexcosnos;
-
- float wpimat[3][3];
-
- /* variables for auto normalize */
- const bool *vgroup_validmap; /* stores if vgroups tie to deforming bones or not */
- const bool *lock_flags;
-
- /* variables for multipaint */
- const bool *defbase_sel; /* set of selected groups */
- int defbase_tot_sel; /* number of selected groups */
- bool do_multipaint; /* true if multipaint enabled and multiple groups selected */
-
- /* variables for blur */
- struct {
- struct MeshElemMap *vmap;
- int *vmap_mem;
- } blur_data;
-
- int defbase_tot;
-} WPaintData;
-
-
int weight_paint_poll(struct bContext *C);
int weight_paint_mode_poll(struct bContext *C);
int vertex_paint_poll(struct bContext *C);
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index bcf1c15da06..c78f4f9fea7 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -802,8 +802,9 @@ static unsigned int vpaint_blend(VPaint *vp, unsigned int col, unsigned int colo
/* whats _dl mean? */
-static float calc_vp_strength_col_dl(VPaint *vp, ViewContext *vc, const float co[3],
- const float mval[2], const float brush_size_pressure, float rgba[4])
+static float calc_vp_strength_col_dl(
+ VPaint *vp, const ViewContext *vc, const float co[3],
+ const float mval[2], const float brush_size_pressure, float rgba[4])
{
float co_ss[2]; /* screenspace */
@@ -839,10 +840,11 @@ static float calc_vp_strength_col_dl(VPaint *vp, ViewContext *vc, const float co
return 0.0f;
}
-static float calc_vp_alpha_col_dl(VPaint *vp, ViewContext *vc,
- float vpimat[3][3], const DMCoNo *v_co_no,
- const float mval[2],
- const float brush_size_pressure, const float brush_alpha_pressure, float rgba[4])
+static float calc_vp_alpha_col_dl(
+ VPaint *vp, const ViewContext *vc,
+ float vpimat[3][3], const DMCoNo *v_co_no,
+ const float mval[2],
+ const float brush_size_pressure, const float brush_alpha_pressure, float rgba[4])
{
float strength = calc_vp_strength_col_dl(vp, vc, v_co_no->co, mval, brush_size_pressure, rgba);
@@ -1407,6 +1409,54 @@ static void multipaint_apply_change(MDeformVert *dvert, const int defbase_tot, f
}
}
+/**
+ * Variables stored both for 'active' and 'mirror' sides.
+ */
+struct WeightPaintGroupData {
+ /** index of active group or its mirror
+ *
+ * - 'active' is always `ob->actdef`.
+ * - 'mirror' is -1 when 'ME_EDIT_MIRROR_X' flag id disabled,
+ * otherwise this will be set to the mirror or the active group (if the group isn't mirrored).
+ */
+ int index;
+ /** lock that includes the 'index' as locked too
+ *
+ * - 'active' is set of locked or active/selected groups
+ * - 'mirror' is set of locked or mirror groups
+ */
+ const bool *lock;
+};
+
+/* struct to avoid passing many args each call to do_weight_paint_vertex()
+ * this _could_ be made a part of the operators 'WPaintData' struct, or at
+ * least a member, but for now keep its own struct, initialized on every
+ * paint stroke update - campbell */
+typedef struct WeightPaintInfo {
+
+ int defbase_tot;
+
+ /* both must add up to 'defbase_tot' */
+ int defbase_tot_sel;
+ int defbase_tot_unsel;
+
+ struct WeightPaintGroupData active, mirror;
+
+ const bool *lock_flags; /* boolean array for locked bones,
+ * length of defbase_tot */
+ const bool *defbase_sel; /* boolean array for selected bones,
+ * length of defbase_tot, cant be const because of how its passed */
+
+ const bool *vgroup_validmap; /* same as WeightPaintData.vgroup_validmap,
+ * only added here for convenience */
+
+ bool do_flip;
+ bool do_multipaint;
+ bool do_auto_normalize;
+
+ float brush_alpha_value; /* result of BKE_brush_alpha_get() */
+} WeightPaintInfo;
+
static void do_weight_paint_vertex_single(
/* vars which remain the same for every vert */
VPaint *wp, Object *ob, const WeightPaintInfo *wpi,
@@ -1822,6 +1872,34 @@ struct WPaintVGroupIndex {
int mirror;
};
+struct WPaintData {
+ ViewContext vc;
+
+ struct WeightPaintGroupData active, mirror;
+
+ void *vp_handle;
+ struct DMCoNo *vertexcosnos;
+
+ float wpimat[3][3];
+
+ /* variables for auto normalize */
+ const bool *vgroup_validmap; /* stores if vgroups tie to deforming bones or not */
+ const bool *lock_flags;
+
+ /* variables for multipaint */
+ const bool *defbase_sel; /* set of selected groups */
+ int defbase_tot_sel; /* number of selected groups */
+ bool do_multipaint; /* true if multipaint enabled and multiple groups selected */
+
+ /* variables for blur */
+ struct {
+ struct MeshElemMap *vmap;
+ int *vmap_mem;
+ } blur_data;
+
+ int defbase_tot;
+};
+
/* ensure we have data on wpaint start, add if needed */
static bool wpaint_ensure_data(
bContext *C, wmOperator *op,
@@ -2074,10 +2152,9 @@ static bool wpaint_stroke_test_start(bContext *C, wmOperator *op, const float mo
/* ALLOCATIONS! no return after this line */
/* make mode data storage */
- wpd = MEM_callocN(sizeof(WPaintData), "WPaintData");
- wpd->vc = MEM_callocN(sizeof(*wpd->vc), __func__);
+ wpd = MEM_callocN(sizeof(struct WPaintData), "WPaintData");
paint_stroke_set_mode_data(stroke, wpd);
- view3d_set_viewcontext(C, wpd->vc);
+ view3d_set_viewcontext(C, &wpd->vc);
wpd->active.index = vgroup_index.active;
wpd->mirror.index = vgroup_index.mirror;
@@ -2128,7 +2205,7 @@ static bool wpaint_stroke_test_start(bContext *C, wmOperator *op, const float mo
ob->sculpt->modes.vwpaint.building_vp_handle = false;
/* imat for normals */
- mul_m4_m4m4(mat, wpd->vc->rv3d->viewmat, ob->obmat);
+ mul_m4_m4m4(mat, wpd->vc.rv3d->viewmat, ob->obmat);
invert_m4_m4(imat, mat);
copy_m3_m4(wpd->wpimat, imat);
@@ -2400,7 +2477,8 @@ static void do_wpaint_brush_smudge_task_cb_ex(
}
if (shouldColor && dot > 0.0) {
const float fade = BKE_brush_curve_strength(brush, test.dist, cache->radius);
- do_weight_paint_vertex(data->vp, data->ob, data->wpi, vertexIndex, dot * fade * bstrength, (float)finalWeight);
+ do_weight_paint_vertex(
+ data->vp, data->ob, data->wpi, vertexIndex, dot * fade * bstrength, (float)finalWeight);
}
}
BKE_pbvh_vertex_iter_end;
@@ -2445,8 +2523,9 @@ static void do_wpaint_brush_draw_task_cb_ex(
if (!(data->vp->flag & VP_SPRAY)) {
MDeformVert *dv = &data->me->dvert[vertexIndex];
MDeformWeight *dw;
- dw = (data->vp->flag & VP_ONLYVGROUP) ? defvert_find_index(dv, data->wpi->active.index) :
- defvert_verify_index(dv, data->wpi->active.index);
+ dw = (data->vp->flag & VP_ONLYVGROUP) ?
+ defvert_find_index(dv, data->wpi->active.index) :
+ defvert_verify_index(dv, data->wpi->active.index);
currentWeight = dw->weight;
if (ss->modes.vwpaint.max_weight[vertexIndex] < 0) {
ss->modes.vwpaint.max_weight[vertexIndex] = min_ff(bstrength + dw->weight, 1.0f);
@@ -2473,7 +2552,7 @@ static void do_wpaint_brush_draw_task_cb_ex(
}
static void do_wpaint_brush_calc_ave_weight_cb_ex(
- void *userdata, void *UNUSED(userdata_chunk), const int n, const int UNUSED(thread_id))
+ void *userdata, void *UNUSED(userdata_chunk), const int n, const
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list