(NOTE: DO NOT TEST)
[blender.git] / source / blender / editors / sculpt_paint / paint_utils.c
index e0ac3c94109309bd24f753a26a040bbd91d4c317..46d41c043bdb2b2514e72cb5f72097a6c60612e7 100644 (file)
@@ -11,6 +11,7 @@
 
 #include "BLI_arithb.h"
 
+#include "BKE_brush.h"
 #include "BKE_DerivedMesh.h"
 #include "BKE_global.h"
 #include "BKE_utildefines.h"
@@ -79,9 +80,9 @@ static void imapaint_tri_weights(Object *ob, float *v1, float *v2, float *v3, fl
 void imapaint_pick_uv(Scene *scene, Object *ob, Mesh *mesh, unsigned int faceindex, int *xy, float *uv)
 {
        DerivedMesh *dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH);
-       int *index = dm->getFaceDataArray(dm, CD_ORIGINDEX);
-       MTFace *tface = dm->getFaceDataArray(dm, CD_MTFACE), *tf;
-       int numfaces = dm->getNumFaces(dm), a;
+       int *index = dm->getTessFaceDataArray(dm, CD_ORIGINDEX);
+       MTFace *tface = dm->getTessFaceDataArray(dm, CD_MTFACE), *tf;
+       int numfaces = dm->getNumTessFaces(dm), a;
        float p[2], w[3], absw, minabsw;
        MFace mf;
        MVert mv[4];
@@ -92,7 +93,7 @@ void imapaint_pick_uv(Scene *scene, Object *ob, Mesh *mesh, unsigned int faceind
        /* test all faces in the derivedmesh with the original index of the picked face */
        for(a = 0; a < numfaces; a++) {
                if(index[a] == faceindex) {
-                       dm->getFace(dm, a, &mf);
+                       dm->getTessFace(dm, a, &mf);
 
                        dm->getVert(dm, mf.v1, &mv[0]);
                        dm->getVert(dm, mf.v2, &mv[1]);
@@ -159,7 +160,7 @@ int imapaint_pick_face(ViewContext *vc, Mesh *me, int *mval, unsigned int *index
 /* used for both 3d view and image window */
 void paint_sample_color(Scene *scene, ARegion *ar, int x, int y)       /* frontbuf */
 {
-       VPaint *vp= scene->toolsettings->vpaint;
+       Brush **br = current_brush_source(scene);
        unsigned int col;
        char *cp;
 
@@ -172,20 +173,10 @@ void paint_sample_color(Scene *scene, ARegion *ar, int x, int y)  /* frontbuf */
 
        cp = (char *)&col;
        
-       if(G.f & (G_VERTEXPAINT|G_WEIGHTPAINT)) {
-               vp->r= cp[0]/255.0f;
-               vp->g= cp[1]/255.0f;
-               vp->b= cp[2]/255.0f;
-       }
-       else {
-               Brush *brush= scene->toolsettings->imapaint.brush;
-
-               if(brush) {
-                       brush->rgb[0]= cp[0]/255.0f;
-                       brush->rgb[1]= cp[1]/255.0f;
-                       brush->rgb[2]= cp[2]/255.0f;
-
-               }
+       if(br && *br) {
+               (*br)->rgb[0]= cp[0]/255.0f;
+               (*br)->rgb[1]= cp[1]/255.0f;
+               (*br)->rgb[2]= cp[2]/255.0f;
        }
 }