Commit: 969e00386daaf2078ddbdfb56e053057750943f9
Author: Antony Riakiotakis
Date:   Tue Apr 29 17:51:22 2014 +0300
https://developer.blender.org/rB969e00386daaf2078ddbdfb56e053057750943f9

First round of code review requests by Campbell

===================================================================

M       release/scripts/startup/bl_ui/space_view3d_toolbar.py
M       source/blender/editors/sculpt_paint/paint_image.c
M       source/blender/editors/sculpt_paint/paint_image_proj.c
M       source/blender/editors/sculpt_paint/paint_ops.c
M       source/blender/editors/sculpt_paint/paint_utils.c
M       source/blender/makesdna/DNA_scene_types.h
M       source/blender/makesrna/intern/rna_sculpt_paint.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py 
b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index f73e32e..a433724 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -1128,9 +1128,9 @@ class VIEW3D_PT_slots_projectpaint(View3DPanel, Panel):
                 col.operator_menu_enum("paint.add_texture_paint_slot", "type")
 
                 row = col.row(align=True)
-                row.prop(settings, "new_slot_xresolution")
-                row.prop(settings, "new_slot_yresolution")
-                col.prop(settings, "new_layer_color")
+                row.prop(settings, "slot_xresolution_default")
+                row.prop(settings, "slot_yresolution_default")
+                col.prop(settings, "slot_color_default")
                 
             if brush.image_tool == 'CLONE' and settings.use_clone_layer:
                 col.label("Clone Slot")
diff --git a/source/blender/editors/sculpt_paint/paint_image.c 
b/source/blender/editors/sculpt_paint/paint_image.c
index 58acfd6..0077c6f 100644
--- a/source/blender/editors/sculpt_paint/paint_image.c
+++ b/source/blender/editors/sculpt_paint/paint_image.c
@@ -1396,13 +1396,13 @@ void paint_proj_mesh_data_ensure(bContext *C, Object 
*ob)
                float color[4] = {0.0, 0.0, 0.0, 1.0};
 
                /* should not be allowed, but just in case */
-               if (imapaint->new_slot_xresolution == 0)
-                       imapaint->new_slot_xresolution = 1024;
-               if (imapaint->new_slot_yresolution == 0)
-                       imapaint->new_slot_yresolution = 1024;
+               if (imapaint->slot_xresolution_default == 0)
+                       imapaint->slot_xresolution_default = 1024;
+               if (imapaint->slot_yresolution_default == 0)
+                       imapaint->slot_yresolution_default = 1024;
 
-               width = imapaint->new_slot_xresolution;
-               height = imapaint->new_slot_yresolution;
+               width = imapaint->slot_xresolution_default;
+               height = imapaint->slot_yresolution_default;
                imapaint->stencil = BKE_image_add_generated(bmain, width, 
height, "Stencil", 32, false, IMA_GENTYPE_BLANK, color);
                imapaint->flag |= IMAGEPAINT_PROJECT_LAYER_STENCIL;
        }
diff --git a/source/blender/editors/sculpt_paint/paint_image_proj.c 
b/source/blender/editors/sculpt_paint/paint_image_proj.c
index 9c99007..15a40c0 100644
--- a/source/blender/editors/sculpt_paint/paint_image_proj.c
+++ b/source/blender/editors/sculpt_paint/paint_image_proj.c
@@ -4794,13 +4794,13 @@ bool proj_paint_add_slot(bContext *C, int type, 
Material *ma)
                return false;
 
        /* should not be allowed, but just in case */
-       if (imapaint->new_slot_xresolution == 0)
-               imapaint->new_slot_xresolution = 1024;
-       if (imapaint->new_slot_yresolution == 0)
-               imapaint->new_slot_yresolution = 1024;
+       if (imapaint->slot_xresolution_default == 0)
+               imapaint->slot_xresolution_default = 1024;
+       if (imapaint->slot_yresolution_default == 0)
+               imapaint->slot_yresolution_default = 1024;
 
-       width = imapaint->new_slot_xresolution;
-       height = imapaint->new_slot_yresolution;
+       width = imapaint->slot_xresolution_default;
+       height = imapaint->slot_yresolution_default;
 
        if (!ma)
                ma = give_current_material(ob, ob->actcol);
@@ -4835,7 +4835,7 @@ bool proj_paint_add_slot(bContext *C, int type, Material 
*ma)
                                        float color[4];
                                        bool use_float = type == MAP_NORM;
 
-                                       copy_v4_v4(color, 
imapaint->new_layer_col);
+                                       copy_v4_v4(color, 
imapaint->slot_color_default);
                                        if (use_float) {
                                                mul_v3_fl(color, color[3]);
                                        }
@@ -4845,10 +4845,8 @@ bool proj_paint_add_slot(bContext *C, int type, Material 
*ma)
                                                color[3] = 1.0;
                                        }
 
-                                       BLI_strncpy(imagename, &ma->id.name[2], 
FILE_MAX);
-                                       BLI_strncat_utf8(imagename, "_", 
FILE_MAX);
-                                       BLI_strncat_utf8(imagename, name, 
FILE_MAX);
                                        /* take the second letter to avoid the 
ID identifier */
+                                       BLI_snprintf(imagename, FILE_MAX, 
"%s_%s", &ma->id.name[2], name);
 
                                        ima = mtex->tex->ima = 
BKE_image_add_generated(bmain, width, height, imagename, 32, use_float,
                                                                                
       IMA_GENTYPE_BLANK, color);
diff --git a/source/blender/editors/sculpt_paint/paint_ops.c 
b/source/blender/editors/sculpt_paint/paint_ops.c
index aa34ca3..4ad1304 100644
--- a/source/blender/editors/sculpt_paint/paint_ops.c
+++ b/source/blender/editors/sculpt_paint/paint_ops.c
@@ -195,10 +195,6 @@ static int palette_color_add_exec(bContext *C, wmOperator 
*UNUSED(op))
                zero_v3(color->rgb);
                color->value = brush->weight;
        }
-       else if (mode == PAINT_WEIGHT) {
-               zero_v3(color->rgb);
-               color->value = brush->alpha;
-       }
 
        return OPERATOR_FINISHED;
 }
diff --git a/source/blender/editors/sculpt_paint/paint_utils.c 
b/source/blender/editors/sculpt_paint/paint_utils.c
index 1ae4c35..6990c3b 100644
--- a/source/blender/editors/sculpt_paint/paint_utils.c
+++ b/source/blender/editors/sculpt_paint/paint_utils.c
@@ -216,36 +216,27 @@ void paint_get_tex_pixel_col(MTex *mtex, float u, float 
v, float rgba[4], struct
 
 /* 3D Paint */
 
-static void imapaint_project(Object *ob, float model[4][4], float proj[4][4], 
const float co[3], float pco[4])
+static void imapaint_project(float matrix[4][4], const float co[3], float 
pco[4])
 {
        copy_v3_v3(pco, co);
        pco[3] = 1.0f;
 
-       mul_m4_v3(ob->obmat, pco);
-       mul_m4_v3(model, pco);
-       mul_m4_v4(proj, pco);
+       mul_m4_v4(matrix, pco);
 }
 
-static void imapaint_tri_weights(Object *ob,
+static void imapaint_tri_weights(float matrix[4][4], GLint view[4],
                                  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 model[4][4], proj[4][4], wmat[3][3], invwmat[3][3];
-       GLint view[4];
+       float wmat[3][3], invwmat[3][3];
 
        /* compute barycentric coordinates */
 
-       /* get the needed opengl matrices */
-       glGetIntegerv(GL_VIEWPORT, view);
-       glGetFloatv(GL_MODELVIEW_MATRIX,  (float *)model);
-       glGetFloatv(GL_PROJECTION_MATRIX, (float *)proj);
-       view[0] = view[1] = 0;
-
        /* project the verts */
-       imapaint_project(ob, model, proj, v1, pv1);
-       imapaint_project(ob, model, proj, v2, pv2);
-       imapaint_project(ob, model, proj, v3, pv3);
+       imapaint_project(matrix, v1, pv1);
+       imapaint_project(matrix, v2, pv2);
+       imapaint_project(matrix, v3, pv3);
 
        /* do inverse view mapping, see gluProject man page */
        h[0] = (co[0] - view[0]) * 2.0f / view[2] - 1;
@@ -280,6 +271,10 @@ static void imapaint_pick_uv(Scene *scene, Object *ob, 
unsigned int faceindex, c
        float p[2], w[3], absw, minabsw;
        MFace mf;
        MVert mv[4];
+       float matrix[4][4], proj[4][4];
+       GLint view[4];
+
+       /* compute barycentric coordinates */
 
        /* double lookup */
        const int *index_mf_to_mpoly = dm->getTessFaceDataArray(dm, 
CD_ORIGINDEX);
@@ -288,6 +283,14 @@ static void imapaint_pick_uv(Scene *scene, Object *ob, 
unsigned int faceindex, c
                index_mp_to_orig = NULL;
        }
 
+       /* get the needed opengl matrices */
+       glGetIntegerv(GL_VIEWPORT, view);
+       glGetFloatv(GL_MODELVIEW_MATRIX,  (float *)matrix);
+       glGetFloatv(GL_PROJECTION_MATRIX, (float *)proj);
+       view[0] = view[1] = 0;
+       mul_m4_m4m4(matrix, matrix, ob->obmat);
+       mul_m4_m4m4(matrix, proj, matrix);
+
        minabsw = 1e10;
        uv[0] = uv[1] = 0.0;
 
@@ -312,7 +315,7 @@ static void imapaint_pick_uv(Scene *scene, Object *ob, 
unsigned int faceindex, c
                        if (mf.v4) {
                                /* the triangle with the largest absolute 
values is the one
                                 * with the most negative weights */
-                               imapaint_tri_weights(ob, mv[0].co, mv[1].co, 
mv[3].co, p, w);
+                               imapaint_tri_weights(matrix, view, mv[0].co, 
mv[1].co, mv[3].co, p, w);
                                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];
@@ -320,7 +323,7 @@ static void imapaint_pick_uv(Scene *scene, Object *ob, 
unsigned int faceindex, c
                                        minabsw = absw;
                                }
 
-                               imapaint_tri_weights(ob, mv[1].co, mv[2].co, 
mv[3].co, p, w);
+                               imapaint_tri_weights(matrix, view, mv[1].co, 
mv[2].co, mv[3].co, p, w);
                                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];
@@ -329,7 +332,7 @@ static void imapaint_pick_uv(Scene *scene, Object *ob, 
unsigned int faceindex, c
                                }
                        }
                        else {
-                               imapaint_tri_weights(ob, mv[0].co, mv[1].co, 
mv[2].co, p, w);
+                               imapaint_tri_weights(matrix, view, mv[0].co, 
mv[1].co, mv[2].co, p, w);
                                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];
@@ -489,9 +492,11 @@ void paint_sample_color(bContext *C, ARegion *ar, int x, 
int y, bool texpaint_pr
                        glReadBuffer(GL_FRONT);
                        glReadPixels(x + ar->winrct.xmin, y + ar->winrct.ymin, 
1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &col);
                        glReadBuffer(GL_BACK);
-               } else
+               }
+               else
                        return;
-       } else {
+       }
+       else {
                glReadBuffer(GL_FRONT);
                glReadPixels(x + ar->winrct.xmin, y + ar->winrct.ymin, 1, 1, 
GL_RGBA, GL_UNSIGNED_BYTE, &col);
                glReadBuffer(GL_BACK);
diff --git a/source/blender/makesdna/DNA_scene_types.h 
b/source/blender/makesdna/DNA_scene_types.h
index 1e2a9ae..bed553e 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -798,14 +798,14 @@ typedef struct ImagePaintSettings {
        short screen_grab_size[2]; /* capture size for re-projection */
 
        /* new layer default resolution */
-       int new_slot_xresolution;
-       int new_slot_yresolution;
+       int slot_xresolution_default;
+       int slot_yresolution_default;
 
        int pad1;
 
        void *paintcursor;                      /* wm handle */
        struct Image *stencil;      /* workaround until we support true layer 
masks */
-       float new_layer_col[4];
+       float slot_color_default[4];
        float stencil_col[3];
        float pad2;
 } ImagePaintSettings;
diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c 
b/source/blender/makesrna/intern/rna_sculpt_paint.c
index 20d1c2d..59f1fa9 100644
--- a/source/blender/makesrna/intern/rna_sculpt_paint.c
+++ b/source/blender/makesrna/intern/rna_sculpt_paint.c
@@ -611,9 +611,8 @@ static void rna_def_image_paint(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Stencil Color", "Stencil color in the 
viewport

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to