code cleanup: use const events for modal and invoke operators.
[blender.git] / source / blender / editors / sculpt_paint / paint_utils.c
index 702937658135e58ee946d53f2cb25f28444ab182..19c061996e733d1e2f5f2a41a045c68a5526ecb0 100644 (file)
@@ -13,7 +13,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
@@ -41,6 +41,7 @@
 
 #include "BLI_math.h"
 #include "BLI_utildefines.h"
 
 #include "BLI_math.h"
 #include "BLI_utildefines.h"
+#include "BLI_rect.h"
 
 #include "BKE_brush.h"
 #include "BKE_context.h"
 
 #include "BKE_brush.h"
 #include "BKE_context.h"
 #include "paint_intern.h"
 
 /* Convert the object-space axis-aligned bounding box (expressed as
 #include "paint_intern.h"
 
 /* Convert the object-space axis-aligned bounding box (expressed as
  its minimum and maximum corners) into a screen-space rectangle,
  returns zero if the result is empty */
* its minimum and maximum corners) into a screen-space rectangle,
* returns zero if the result is empty */
 int paint_convert_bb_to_rect(rcti *rect,
 int paint_convert_bb_to_rect(rcti *rect,
-                                                        const float bb_min[3],
-                                                        const float bb_max[3],
-                                                        const ARegion *ar,
-                                                        RegionView3D *rv3d,
-                                                        Object *ob)
+                             const float bb_min[3],
+                             const float bb_max[3],
+                             const ARegion *ar,
+                             RegionView3D *rv3d,
+                             Object *ob)
 {
        float projection_mat[4][4];
        int i, j, k;
 
 {
        float projection_mat[4][4];
        int i, j, k;
 
-       rect->xmin = rect->ymin = INT_MAX;
-       rect->xmax = rect->ymax = INT_MIN;
+       BLI_rcti_init_minmax(rect);
 
        /* return zero if the bounding box has non-positive volume */
 
        /* return zero if the bounding box has non-positive volume */
-       if(bb_min[0] > bb_max[0] || bb_min[1] > bb_max[1] || bb_min[2] > bb_max[2])
+       if (bb_min[0] > bb_max[0] || bb_min[1] > bb_max[1] || bb_min[2] > bb_max[2])
                return 0;
 
        ED_view3d_ob_project_mat_get(rv3d, ob, projection_mat);
 
                return 0;
 
        ED_view3d_ob_project_mat_get(rv3d, ob, projection_mat);
 
-       for(i = 0; i < 2; ++i) {
-               for(j = 0; j < 2; ++j) {
-                       for(k = 0; k < 2; ++k) {
+       for (i = 0; i < 2; ++i) {
+               for (j = 0; j < 2; ++j) {
+                       for (k = 0; k < 2; ++k) {
                                float vec[3], proj[2];
                                float vec[3], proj[2];
+                               int proj_i[2];
                                vec[0] = i ? bb_min[0] : bb_max[0];
                                vec[1] = j ? bb_min[1] : bb_max[1];
                                vec[2] = k ? bb_min[2] : bb_max[2];
                                /* convert corner to screen space */
                                vec[0] = i ? bb_min[0] : bb_max[0];
                                vec[1] = j ? bb_min[1] : bb_max[1];
                                vec[2] = k ? bb_min[2] : bb_max[2];
                                /* convert corner to screen space */
-                               ED_view3d_project_float(ar, vec, proj,
-                                                                               projection_mat);
+                               ED_view3d_project_float_v2_m4(ar, vec, proj, projection_mat);
                                /* expand 2D rectangle */
                                /* expand 2D rectangle */
-                               rect->xmin = MIN2(rect->xmin, proj[0]);
-                               rect->xmax = MAX2(rect->xmax, proj[0]);
-                               rect->ymin = MIN2(rect->ymin, proj[1]);
-                               rect->ymax = MAX2(rect->ymax, proj[1]);
+
+                               /* we could project directly to int? */
+                               proj_i[0] = proj[0];
+                               proj_i[1] = proj[1];
+
+                               BLI_rcti_do_minmax_v(rect, proj_i);
                        }
                }
        }
                        }
                }
        }
@@ -113,13 +115,13 @@ int paint_convert_bb_to_rect(rcti *rect,
 }
 
 /* Get four planes in object-space that describe the projection of
 }
 
 /* Get four planes in object-space that describe the projection of
  screen_rect from screen into object-space (essentially converting a
  2D screens-space bounding box into four 3D planes) */
* screen_rect from screen into object-space (essentially converting a
* 2D screens-space bounding box into four 3D planes) */
 void paint_calc_redraw_planes(float planes[4][4],
 void paint_calc_redraw_planes(float planes[4][4],
-                                                         const ARegion *ar,
-                                                         RegionView3D *rv3d,
-                                                         Object *ob,
-                                                         const rcti *screen_rect)
+                              const ARegion *ar,
+                              RegionView3D *rv3d,
+                              Object *ob,
+                              const rcti *screen_rect)
 {
        BoundBox bb;
        bglMats mats;
 {
        BoundBox bb;
        bglMats mats;
@@ -135,87 +137,82 @@ void paint_calc_redraw_planes(float planes[4][4],
        rect.ymin -= 2;
        rect.ymax += 2;
 
        rect.ymin -= 2;
        rect.ymax += 2;
 
-       ED_view3d_calc_clipping(&bb, planes, &mats, &rect);
+       ED_view3d_clipping_calc(&bb, planes, &mats, &rect);
        mul_m4_fl(planes, -1.0f);
 }
 
 /* convert a point in model coordinates to 2D screen coordinates */
 /* TODO: can be deleted once all calls are replaced with
        mul_m4_fl(planes, -1.0f);
 }
 
 /* convert a point in model coordinates to 2D screen coordinates */
 /* TODO: can be deleted once all calls are replaced with
  view3d_project_float() */
* view3d_project_float() */
 void projectf(bglMats *mats, const float v[3], float p[2])
 {
        double ux, uy, uz;
 
 void projectf(bglMats *mats, const float v[3], float p[2])
 {
        double ux, uy, uz;
 
-       gluProject(v[0],v[1],v[2], mats->modelview, mats->projection,
-                  (GLint *)mats->viewport, &ux, &uy, &uz);
-       p[0]= ux;
-       p[1]= uy;
+       gluProject(v[0], v[1], v[2], mats->modelview, mats->projection,
+                  (GLint *)mats->viewport, &ux, &uy, &uz);
+       p[0] = ux;
+       p[1] = uy;
 }
 
 float paint_calc_object_space_radius(ViewContext *vc, const float center[3],
 }
 
 float paint_calc_object_space_radius(ViewContext *vc, const float center[3],
-                                    float pixel_radius)
+                                     float pixel_radius)
 {
        Object *ob = vc->obact;
        float delta[3], scale, loc[3];
 {
        Object *ob = vc->obact;
        float delta[3], scale, loc[3];
-       float mval_f[2];
+       const float mval_f[2] = {pixel_radius, 0.0f};
+       float zfac;
 
        mul_v3_m4v3(loc, ob->obmat, center);
 
 
        mul_v3_m4v3(loc, ob->obmat, center);
 
-       initgrabz(vc->rv3d, loc[0], loc[1], loc[2]);
+       zfac = ED_view3d_calc_zfac(vc->rv3d, loc, NULL);
+       ED_view3d_win_to_delta(vc->ar, mval_f, delta, zfac);
 
 
-       mval_f[0]= pixel_radius;
-       mval_f[1]= 0.0f;
-       ED_view3d_win_to_delta(vc->ar, mval_f, delta);
+       scale = fabsf(mat4_to_scale(ob->obmat));
+       scale = (scale == 0.0f) ? 1.0f : scale;
 
 
-       scale= fabsf(mat4_to_scale(ob->obmat));
-       scale= (scale == 0.0f)? 1.0f: scale;
-
-       return len_v3(delta)/scale;
+       return len_v3(delta) / scale;
 }
 
 }
 
-float paint_get_tex_pixel(Brush* br, float u, float v)
+float paint_get_tex_pixel(Brush *br, float u, float v, struct ImagePool *pool)
 {
 {
-       TexResult texres;
-       float co[3];
+       TexResult texres = {0};
+       float co[3] = {u, v, 0.0f};
        int hasrgb;
 
        int hasrgb;
 
-       co[0] = u;
-       co[1] = v;
-       co[2] = 0;
-
-       memset(&texres, 0, sizeof(TexResult));
-       hasrgb = multitex_ext(br->mtex.tex, co, NULL, NULL, 0, &texres);
+       hasrgb = multitex_ext(br->mtex.tex, co, NULL, NULL, 0, &texres, pool);
 
        if (hasrgb & TEX_RGB)
 
        if (hasrgb & TEX_RGB)
-               texres.tin = (0.35f*texres.tr + 0.45f*texres.tg + 0.2f*texres.tb)*texres.ta;
+               texres.tin = rgb_to_grayscale(&texres.tr) * texres.ta;
 
        return texres.tin;
 }
 
 /* 3D Paint */
 
 
        return texres.tin;
 }
 
 /* 3D Paint */
 
-static void imapaint_project(Object *ob, float *model, float *proj, float *co, float *pco)
+static void imapaint_project(Object *ob, float model[4][4], float proj[4][4], const float co[3], float pco[4])
 {
        copy_v3_v3(pco, co);
 {
        copy_v3_v3(pco, co);
-       pco[3]= 1.0f;
+       pco[3] = 1.0f;
 
        mul_m4_v3(ob->obmat, pco);
 
        mul_m4_v3(ob->obmat, pco);
-       mul_m4_v3((float(*)[4])model, pco);
-       mul_m4_v4((float(*)[4])proj, pco);
+       mul_m4_v3(model, pco);
+       mul_m4_v4(proj, pco);
 }
 
 }
 
-static void imapaint_tri_weights(Object *ob, float *v1, float *v2, float *v3, float *co, float *w)
+static void imapaint_tri_weights(Object *ob,
+                                 const float v1[3], const float v2[3], const float v3[3],
+                                 const float co[2], float w[3])
 {
        float pv1[4], pv2[4], pv3[4], h[3], divw;
 {
        float pv1[4], pv2[4], pv3[4], h[3], divw;
-       float model[16], proj[16], wmat[3][3], invwmat[3][3];
+       float model[4][4], proj[4][4], wmat[3][3], invwmat[3][3];
        GLint view[4];
 
        /* compute barycentric coordinates */
 
        /* get the needed opengl matrices */
        glGetIntegerv(GL_VIEWPORT, view);
        GLint view[4];
 
        /* compute barycentric coordinates */
 
        /* get the needed opengl matrices */
        glGetIntegerv(GL_VIEWPORT, view);
-       glGetFloatv(GL_MODELVIEW_MATRIX, model);
-       glGetFloatv(GL_PROJECTION_MATRIX, proj);
+       glGetFloatv(GL_MODELVIEW_MATRIX,  (float *)model);
+       glGetFloatv(GL_PROJECTION_MATRIX, (float *)proj);
        view[0] = view[1] = 0;
 
        /* project the verts */
        view[0] = view[1] = 0;
 
        /* project the verts */
@@ -224,16 +221,16 @@ static void imapaint_tri_weights(Object *ob, float *v1, float *v2, float *v3, fl
        imapaint_project(ob, model, proj, v3, pv3);
 
        /* do inverse view mapping, see gluProject man page */
        imapaint_project(ob, model, proj, v3, pv3);
 
        /* do inverse view mapping, see gluProject man page */
-       h[0]= (co[0] - view[0])*2.0f/view[2] - 1;
-       h[1]= (co[1] - view[1])*2.0f/view[3] - 1;
-       h[2]= 1.0f;
+       h[0] = (co[0] - view[0]) * 2.0f / view[2] - 1;
+       h[1] = (co[1] - view[1]) * 2.0f / view[3] - 1;
+       h[2] = 1.0f;
 
 
-       /* solve for(w1,w2,w3)/perspdiv in:
-          h*perspdiv = Project*Model*(w1*v1 + w2*v2 + w3*v3) */
+       /* solve for (w1,w2,w3)/perspdiv in:
+        * h * perspdiv = Project * Model * (w1 * v1 + w2 * v2 + w3 * v3) */
 
 
-       wmat[0][0]= pv1[0];  wmat[1][0]= pv2[0];  wmat[2][0]= pv3[0];
-       wmat[0][1]= pv1[1];  wmat[1][1]= pv2[1];  wmat[2][1]= pv3[1];
-       wmat[0][2]= pv1[3];  wmat[1][2]= pv2[3];  wmat[2][2]= pv3[3];
+       wmat[0][0] = pv1[0];  wmat[1][0] = pv2[0];  wmat[2][0] = pv3[0];
+       wmat[0][1] = pv1[1];  wmat[1][1] = pv2[1];  wmat[2][1] = pv3[1];
+       wmat[0][2] = pv1[3];  wmat[1][2] = pv2[3];  wmat[2][2] = pv3[3];
 
        invert_m3_m3(invwmat, wmat);
        mul_m3_v3(invwmat, h);
 
        invert_m3_m3(invwmat, wmat);
        mul_m3_v3(invwmat, h);
@@ -241,68 +238,75 @@ static void imapaint_tri_weights(Object *ob, float *v1, float *v2, float *v3, fl
        copy_v3_v3(w, h);
 
        /* w is still divided by perspdiv, make it sum to one */
        copy_v3_v3(w, h);
 
        /* w is still divided by perspdiv, make it sum to one */
-       divw= w[0] + w[1] + w[2];
-       if(divw != 0.0f)
-               mul_v3_fl(w, 1.0f/divw);
+       divw = w[0] + w[1] + w[2];
+       if (divw != 0.0f) {
+               mul_v3_fl(w, 1.0f / divw);
+       }
 }
 
 /* compute uv coordinates of mouse in face */
 void imapaint_pick_uv(Scene *scene, Object *ob, unsigned int faceindex, const int xy[2], float uv[2])
 {
        DerivedMesh *dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH);
 }
 
 /* compute uv coordinates of mouse in face */
 void imapaint_pick_uv(Scene *scene, Object *ob, unsigned int faceindex, const int xy[2], float uv[2])
 {
        DerivedMesh *dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH);
-       const int *index = dm->getTessFaceDataArray(dm, CD_ORIGINDEX);
        MTFace *tface = dm->getTessFaceDataArray(dm, CD_MTFACE), *tf;
        int numfaces = dm->getNumTessFaces(dm), a, findex;
        float p[2], w[3], absw, minabsw;
        MFace mf;
        MVert mv[4];
 
        MTFace *tface = dm->getTessFaceDataArray(dm, CD_MTFACE), *tf;
        int numfaces = dm->getNumTessFaces(dm), a, findex;
        float p[2], w[3], absw, minabsw;
        MFace mf;
        MVert mv[4];
 
+       /* double lookup */
+       const int *index_mf_to_mpoly = dm->getTessFaceDataArray(dm, CD_ORIGINDEX);
+       const int *index_mp_to_orig  = dm->getPolyDataArray(dm, CD_ORIGINDEX);
+       if (index_mf_to_mpoly == NULL) {
+               index_mp_to_orig = NULL;
+       }
+
        minabsw = 1e10;
        uv[0] = uv[1] = 0.0;
 
        /* test all faces in the derivedmesh with the original index of the picked face */
        minabsw = 1e10;
        uv[0] = uv[1] = 0.0;
 
        /* test all faces in the derivedmesh with the original index of the picked face */
-       for(a = 0; a < numfaces; a++) {
-               findex= index ? index[a]: a;
+       for (a = 0; a < numfaces; a++) {
+               findex = index_mf_to_mpoly ? DM_origindex_mface_mpoly(index_mf_to_mpoly, index_mp_to_orig, a) : a;
 
 
-               if(findex == faceindex) {
+               if (findex == faceindex) {
                        dm->getTessFace(dm, a, &mf);
 
                        dm->getVert(dm, mf.v1, &mv[0]);
                        dm->getVert(dm, mf.v2, &mv[1]);
                        dm->getVert(dm, mf.v3, &mv[2]);
                        dm->getTessFace(dm, a, &mf);
 
                        dm->getVert(dm, mf.v1, &mv[0]);
                        dm->getVert(dm, mf.v2, &mv[1]);
                        dm->getVert(dm, mf.v3, &mv[2]);
-                       if(mf.v4)
+                       if (mf.v4)
                                dm->getVert(dm, mf.v4, &mv[3]);
 
                                dm->getVert(dm, mf.v4, &mv[3]);
 
-                       tf= &tface[a];
+                       tf = &tface[a];
 
 
-                       p[0]= xy[0];
-                       p[1]= xy[1];
+                       p[0] = xy[0];
+                       p[1] = xy[1];
 
 
-                       if(mf.v4) {
+                       if (mf.v4) {
                                /* the triangle with the largest absolute values is the one
                                /* the triangle with the largest absolute values is the one
-                                  with the most negative weights */
+                                * with the most negative weights */
                                imapaint_tri_weights(ob, mv[0].co, mv[1].co, mv[3].co, p, w);
                                imapaint_tri_weights(ob, mv[0].co, mv[1].co, mv[3].co, p, w);
-                               absw= fabs(w[0]) + fabs(w[1]) + fabs(w[2]);
-                               if(absw < minabsw) {
-                                       uv[0]= tf->uv[0][0]*w[0] + tf->uv[1][0]*w[1] + tf->uv[3][0]*w[2];
-                                       uv[1]= tf->uv[0][1]*w[0] + tf->uv[1][1]*w[1] + tf->uv[3][1]*w[2];
+                               absw = fabsf(w[0]) + fabsf(w[1]) + fabsf(w[2]);
+                               if (absw < minabsw) {
+                                       uv[0] = tf->uv[0][0] * w[0] + tf->uv[1][0] * w[1] + tf->uv[3][0] * w[2];
+                                       uv[1] = tf->uv[0][1] * w[0] + tf->uv[1][1] * w[1] + tf->uv[3][1] * w[2];
                                        minabsw = absw;
                                }
 
                                imapaint_tri_weights(ob, mv[1].co, mv[2].co, mv[3].co, p, w);
                                        minabsw = absw;
                                }
 
                                imapaint_tri_weights(ob, mv[1].co, mv[2].co, mv[3].co, p, w);
-                               absw= fabs(w[0]) + fabs(w[1]) + fabs(w[2]);
-                               if(absw < minabsw) {
-                                       uv[0]= tf->uv[1][0]*w[0] + tf->uv[2][0]*w[1] + tf->uv[3][0]*w[2];
-                                       uv[1]= tf->uv[1][1]*w[0] + tf->uv[2][1]*w[1] + tf->uv[3][1]*w[2];
+                               absw = fabsf(w[0]) + fabsf(w[1]) + fabsf(w[2]);
+                               if (absw < minabsw) {
+                                       uv[0] = tf->uv[1][0] * w[0] + tf->uv[2][0] * w[1] + tf->uv[3][0] * w[2];
+                                       uv[1] = tf->uv[1][1] * w[0] + tf->uv[2][1] * w[1] + tf->uv[3][1] * w[2];
                                        minabsw = absw;
                                }
                        }
                        else {
                                imapaint_tri_weights(ob, mv[0].co, mv[1].co, mv[2].co, p, w);
                                        minabsw = absw;
                                }
                        }
                        else {
                                imapaint_tri_weights(ob, mv[0].co, mv[1].co, mv[2].co, p, w);
-                               absw= fabs(w[0]) + fabs(w[1]) + fabs(w[2]);
-                               if(absw < minabsw) {
-                                       uv[0]= tf->uv[0][0]*w[0] + tf->uv[1][0]*w[1] + tf->uv[2][0]*w[2];
-                                       uv[1]= tf->uv[0][1]*w[0] + tf->uv[1][1]*w[1] + tf->uv[2][1]*w[2];
+                               absw = fabsf(w[0]) + fabsf(w[1]) + fabsf(w[2]);
+                               if (absw < minabsw) {
+                                       uv[0] = tf->uv[0][0] * w[0] + tf->uv[1][0] * w[1] + tf->uv[2][0] * w[2];
+                                       uv[1] = tf->uv[0][1] * w[0] + tf->uv[1][1] * w[1] + tf->uv[2][1] * w[2];
                                        minabsw = absw;
                                }
                        }
                                        minabsw = absw;
                                }
                        }
@@ -312,17 +316,18 @@ void imapaint_pick_uv(Scene *scene, Object *ob, unsigned int faceindex, const in
        dm->release(dm);
 }
 
        dm->release(dm);
 }
 
-///* returns 0 if not found, otherwise 1 */
-int imapaint_pick_face(ViewContext *vc, Mesh *me, const int mval[2], unsigned int *index)
+/* returns 0 if not found, otherwise 1 */
+int imapaint_pick_face(ViewContext *vc, const int mval[2], unsigned int *index, unsigned int totface)
 {
 {
-       if(!me || me->totface==0)
+       if (totface == 0)
                return 0;
 
        /* sample only on the exact position */
        *index = view3d_sample_backbuf(vc, mval[0], mval[1]);
 
                return 0;
 
        /* sample only on the exact position */
        *index = view3d_sample_backbuf(vc, mval[0], mval[1]);
 
-       if((*index)<=0 || (*index)>(unsigned int)me->totface)
+       if ((*index) <= 0 || (*index) > (unsigned int)totface) {
                return 0;
                return 0;
+       }
 
        (*index)--;
        
 
        (*index)--;
        
@@ -330,9 +335,9 @@ int imapaint_pick_face(ViewContext *vc, Mesh *me, const int mval[2], unsigned in
 }
 
 /* used for both 3d view and image window */
 }
 
 /* used for both 3d view and image window */
-void paint_sample_color(Scene *scene, ARegion *ar, int x, int y)       /* frontbuf */
+void paint_sample_color(const bContext *C, ARegion *ar, int x, int y)    /* frontbuf */
 {
 {
-       Brush *br = paint_brush(paint_get_active(scene));
+       Brush *br = paint_brush(paint_get_active_from_context(C));
        unsigned int col;
        char *cp;
 
        unsigned int col;
        char *cp;
 
@@ -340,29 +345,29 @@ void paint_sample_color(Scene *scene, ARegion *ar, int x, int y)  /* frontbuf */
        CLAMP(y, 0, ar->winy);
        
        glReadBuffer(GL_FRONT);
        CLAMP(y, 0, ar->winy);
        
        glReadBuffer(GL_FRONT);
-       glReadPixels(x+ar->winrct.xmin, y+ar->winrct.ymin, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &col);
+       glReadPixels(x + ar->winrct.xmin, y + ar->winrct.ymin, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &col);
        glReadBuffer(GL_BACK);
 
        cp = (char *)&col;
        
        glReadBuffer(GL_BACK);
 
        cp = (char *)&col;
        
-       if(br) {
-               br->rgb[0]= cp[0]/255.0f;
-               br->rgb[1]= cp[1]/255.0f;
-               br->rgb[2]= cp[2]/255.0f;
+       if (br) {
+               br->rgb[0] = cp[0] / 255.0f;
+               br->rgb[1] = cp[1] / 255.0f;
+               br->rgb[2] = cp[2] / 255.0f;
        }
 }
 
 static int brush_curve_preset_exec(bContext *C, wmOperator *op)
 {
        }
 }
 
 static int brush_curve_preset_exec(bContext *C, wmOperator *op)
 {
-       Brush *br = paint_brush(paint_get_active(CTX_data_scene(C)));
-       brush_curve_preset(br, RNA_enum_get(op->ptr, "shape"));
+       Brush *br = paint_brush(paint_get_active_from_context(C));
+       BKE_brush_curve_preset(br, RNA_enum_get(op->ptr, "shape"));
 
        return OPERATOR_FINISHED;
 }
 
 static int brush_curve_preset_poll(bContext *C)
 {
 
        return OPERATOR_FINISHED;
 }
 
 static int brush_curve_preset_poll(bContext *C)
 {
-       Brush *br = paint_brush(paint_get_active(CTX_data_scene(C)));
+       Brush *br = paint_brush(paint_get_active_from_context(C));
 
        return br && br->curve;
 }
 
        return br && br->curve;
 }
@@ -378,14 +383,12 @@ void BRUSH_OT_curve_preset(wmOperatorType *ot)
                {CURVE_PRESET_ROOT, "ROOT", 0, "Root", ""},
                {0, NULL, 0, NULL, NULL}};
 
                {CURVE_PRESET_ROOT, "ROOT", 0, "Root", ""},
                {0, NULL, 0, NULL, NULL}};
 
-       ot->name= "Preset";
-       ot->description= "Set brush shape";
-       ot->idname= "BRUSH_OT_curve_preset";
+       ot->name = "Preset";
+       ot->description = "Set brush shape";
+       ot->idname = "BRUSH_OT_curve_preset";
 
 
-       ot->exec= brush_curve_preset_exec;
-       ot->poll= brush_curve_preset_poll;
-
-       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+       ot->exec = brush_curve_preset_exec;
+       ot->poll = brush_curve_preset_poll;
 
        RNA_def_enum(ot->srna, "shape", prop_shape_items, CURVE_PRESET_SMOOTH, "Mode", "");
 }
 
        RNA_def_enum(ot->srna, "shape", prop_shape_items, CURVE_PRESET_SMOOTH, "Mode", "");
 }
@@ -401,19 +404,19 @@ static int paint_select_linked_exec(bContext *C, wmOperator *UNUSED(op))
 
 void PAINT_OT_face_select_linked(wmOperatorType *ot)
 {
 
 void PAINT_OT_face_select_linked(wmOperatorType *ot)
 {
-       ot->name= "Select Linked";
-       ot->description= "Select linked faces";
-       ot->idname= "PAINT_OT_face_select_linked";
+       ot->name = "Select Linked";
+       ot->description = "Select linked faces";
+       ot->idname = "PAINT_OT_face_select_linked";
 
 
-       ot->exec= paint_select_linked_exec;
-       ot->poll= facemask_paint_poll;
+       ot->exec = paint_select_linked_exec;
+       ot->poll = facemask_paint_poll;
 
 
-       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+       ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 }
 
 }
 
-static int paint_select_linked_pick_invoke(bContext *C, wmOperator *op, wmEvent *event)
+static int paint_select_linked_pick_invoke(bContext *C, wmOperator *op, const wmEvent *event)
 {
 {
-       int mode= RNA_boolean_get(op->ptr, "extend") ? 1:0;
+       int mode = RNA_boolean_get(op->ptr, "extend") ? 1 : 0;
        paintface_select_linked(C, CTX_data_active_object(C), event->mval, mode);
        ED_region_tag_redraw(CTX_wm_region(C));
        return OPERATOR_FINISHED;
        paintface_select_linked(C, CTX_data_active_object(C), event->mval, mode);
        ED_region_tag_redraw(CTX_wm_region(C));
        return OPERATOR_FINISHED;
@@ -421,14 +424,14 @@ static int paint_select_linked_pick_invoke(bContext *C, wmOperator *op, wmEvent
 
 void PAINT_OT_face_select_linked_pick(wmOperatorType *ot)
 {
 
 void PAINT_OT_face_select_linked_pick(wmOperatorType *ot)
 {
-       ot->name= "Select Linked Pick";
-       ot->description= "Select linked faces";
-       ot->idname= "PAINT_OT_face_select_linked_pick";
+       ot->name = "Select Linked Pick";
+       ot->description = "Select linked faces";
+       ot->idname = "PAINT_OT_face_select_linked_pick";
 
 
-       ot->invoke= paint_select_linked_pick_invoke;
-       ot->poll= facemask_paint_poll;
+       ot->invoke = paint_select_linked_pick_invoke;
+       ot->poll = facemask_paint_poll;
 
 
-       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+       ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 
        RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend the existing selection");
 }
 
        RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend the existing selection");
 }
@@ -436,7 +439,7 @@ void PAINT_OT_face_select_linked_pick(wmOperatorType *ot)
 
 static int face_select_all_exec(bContext *C, wmOperator *op)
 {
 
 static int face_select_all_exec(bContext *C, wmOperator *op)
 {
-       Object *ob= CTX_data_active_object(C);
+       Object *ob = CTX_data_active_object(C);
        paintface_deselect_all_visible(ob, RNA_enum_get(op->ptr, "action"), TRUE);
        ED_region_tag_redraw(CTX_wm_region(C));
        return OPERATOR_FINISHED;
        paintface_deselect_all_visible(ob, RNA_enum_get(op->ptr, "action"), TRUE);
        ED_region_tag_redraw(CTX_wm_region(C));
        return OPERATOR_FINISHED;
@@ -445,14 +448,14 @@ static int face_select_all_exec(bContext *C, wmOperator *op)
 
 void PAINT_OT_face_select_all(wmOperatorType *ot)
 {
 
 void PAINT_OT_face_select_all(wmOperatorType *ot)
 {
-       ot->name= "Face Selection";
-       ot->description= "Change selection for all faces";
-       ot->idname= "PAINT_OT_face_select_all";
+       ot->name = "(De)select All";
+       ot->description = "Change selection for all faces";
+       ot->idname = "PAINT_OT_face_select_all";
 
 
-       ot->exec= face_select_all_exec;
-       ot->poll= facemask_paint_poll;
+       ot->exec = face_select_all_exec;
+       ot->poll = facemask_paint_poll;
 
 
-       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+       ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 
        WM_operator_properties_select_all(ot);
 }
 
        WM_operator_properties_select_all(ot);
 }
@@ -460,7 +463,7 @@ void PAINT_OT_face_select_all(wmOperatorType *ot)
 
 static int vert_select_all_exec(bContext *C, wmOperator *op)
 {
 
 static int vert_select_all_exec(bContext *C, wmOperator *op)
 {
-       Object *ob= CTX_data_active_object(C);
+       Object *ob = CTX_data_active_object(C);
        paintvert_deselect_all_visible(ob, RNA_enum_get(op->ptr, "action"), TRUE);
        ED_region_tag_redraw(CTX_wm_region(C));
        return OPERATOR_FINISHED;
        paintvert_deselect_all_visible(ob, RNA_enum_get(op->ptr, "action"), TRUE);
        ED_region_tag_redraw(CTX_wm_region(C));
        return OPERATOR_FINISHED;
@@ -469,62 +472,22 @@ static int vert_select_all_exec(bContext *C, wmOperator *op)
 
 void PAINT_OT_vert_select_all(wmOperatorType *ot)
 {
 
 void PAINT_OT_vert_select_all(wmOperatorType *ot)
 {
-       ot->name= "Vertex Selection";
-       ot->description= "Change selection for all vertices";
-       ot->idname= "PAINT_OT_vert_select_all";
+       ot->name = "(De)select All";
+       ot->description = "Change selection for all vertices";
+       ot->idname = "PAINT_OT_vert_select_all";
 
 
-       ot->exec= vert_select_all_exec;
-       ot->poll= vert_paint_poll;
+       ot->exec = vert_select_all_exec;
+       ot->poll = vert_paint_poll;
 
 
-       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+       ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 
        WM_operator_properties_select_all(ot);
 }
 
 
        WM_operator_properties_select_all(ot);
 }
 
-static int vert_select_inverse_exec(bContext *C, wmOperator *UNUSED(op))
-{
-       Object *ob= CTX_data_active_object(C);
-       paintvert_deselect_all_visible(ob, SEL_INVERT, TRUE);
-       ED_region_tag_redraw(CTX_wm_region(C));
-       return OPERATOR_FINISHED;
-}
-
-void PAINT_OT_vert_select_inverse(wmOperatorType *ot)
-{
-       ot->name= "Vertex Select Invert";
-       ot->description= "Invert selection of vertices";
-       ot->idname= "PAINT_OT_vert_select_inverse";
-
-       ot->exec= vert_select_inverse_exec;
-       ot->poll= vert_paint_poll;
-
-       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-}
-static int face_select_inverse_exec(bContext *C, wmOperator *UNUSED(op))
-{
-       Object *ob= CTX_data_active_object(C);
-       paintface_deselect_all_visible(ob, SEL_INVERT, TRUE);
-       ED_region_tag_redraw(CTX_wm_region(C));
-       return OPERATOR_FINISHED;
-}
-
-
-void PAINT_OT_face_select_inverse(wmOperatorType *ot)
-{
-       ot->name= "Face Select Invert";
-       ot->description= "Invert selection of faces";
-       ot->idname= "PAINT_OT_face_select_inverse";
-
-       ot->exec= face_select_inverse_exec;
-       ot->poll= facemask_paint_poll;
-
-       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-}
-
 static int face_select_hide_exec(bContext *C, wmOperator *op)
 {
 static int face_select_hide_exec(bContext *C, wmOperator *op)
 {
-       const int unselected= RNA_boolean_get(op->ptr, "unselected");
-       Object *ob= CTX_data_active_object(C);
+       const int unselected = RNA_boolean_get(op->ptr, "unselected");
+       Object *ob = CTX_data_active_object(C);
        paintface_hide(ob, unselected);
        ED_region_tag_redraw(CTX_wm_region(C));
        return OPERATOR_FINISHED;
        paintface_hide(ob, unselected);
        ED_region_tag_redraw(CTX_wm_region(C));
        return OPERATOR_FINISHED;
@@ -532,21 +495,21 @@ static int face_select_hide_exec(bContext *C, wmOperator *op)
 
 void PAINT_OT_face_select_hide(wmOperatorType *ot)
 {
 
 void PAINT_OT_face_select_hide(wmOperatorType *ot)
 {
-       ot->name= "Face Select Hide";
-       ot->description= "Hide selected faces";
-       ot->idname= "PAINT_OT_face_select_hide";
+       ot->name = "Face Select Hide";
+       ot->description = "Hide selected faces";
+       ot->idname = "PAINT_OT_face_select_hide";
 
 
-       ot->exec= face_select_hide_exec;
-       ot->poll= facemask_paint_poll;
+       ot->exec = face_select_hide_exec;
+       ot->poll = facemask_paint_poll;
 
 
-       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+       ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 
        RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected objects");
 }
 
 static int face_select_reveal_exec(bContext *C, wmOperator *UNUSED(op))
 {
 
        RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected objects");
 }
 
 static int face_select_reveal_exec(bContext *C, wmOperator *UNUSED(op))
 {
-       Object *ob= CTX_data_active_object(C);
+       Object *ob = CTX_data_active_object(C);
        paintface_reveal(ob);
        ED_region_tag_redraw(CTX_wm_region(C));
        return OPERATOR_FINISHED;
        paintface_reveal(ob);
        ED_region_tag_redraw(CTX_wm_region(C));
        return OPERATOR_FINISHED;
@@ -554,14 +517,14 @@ static int face_select_reveal_exec(bContext *C, wmOperator *UNUSED(op))
 
 void PAINT_OT_face_select_reveal(wmOperatorType *ot)
 {
 
 void PAINT_OT_face_select_reveal(wmOperatorType *ot)
 {
-       ot->name= "Face Select Reveal";
-       ot->description= "Reveal hidden faces";
-       ot->idname= "PAINT_OT_face_select_reveal";
+       ot->name = "Face Select Reveal";
+       ot->description = "Reveal hidden faces";
+       ot->idname = "PAINT_OT_face_select_reveal";
 
 
-       ot->exec= face_select_reveal_exec;
-       ot->poll= facemask_paint_poll;
+       ot->exec = face_select_reveal_exec;
+       ot->poll = facemask_paint_poll;
 
 
-       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+       ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 
        RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected objects");
 }
 
        RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected objects");
 }