Revision: 37347
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37347
Author:   jwilkins
Date:     2011-06-09 22:25:53 +0000 (Thu, 09 Jun 2011)
Log Message:
-----------
Revision: 30701
Author: nicholasbishop
Date: 7:19:18 PM, Saturday, July 24, 2010
Message:
== VPaint ==

* Re-enabled all the vpaint tools except for blur
* Also added alpha blending modes
* Removed dead code

TODO:
* Combine the add and erase alpha modes, only separate for now to match the 
IMB_BLEND modes more easily

** jwilkins:
** looking ahead, I do not see a do_versions that fixes up the vertex tools 
from old to new
** the IMB_BLEND modes almost match the vertex paint tools, but not exactly

Modified Paths:
--------------
    branches/soc-2011-onion/source/blender/editors/sculpt_paint/paint_vertex.c
    branches/soc-2011-onion/source/blender/makesdna/DNA_brush_types.h
    branches/soc-2011-onion/source/blender/makesrna/intern/rna_brush.c

Property Changed:
----------------
    branches/soc-2011-onion/


Property changes on: branches/soc-2011-onion
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/soc-2010-jwilkins:28499-37009
/branches/soc-2010-nicolasbishop:28448-30676,30692-30693,30696,30699-30700,30742
/trunk/blender:36833-37206
   + /branches/soc-2010-jwilkins:28499-37009
/branches/soc-2010-nicolasbishop:28448-30676,30692-30693,30696,30699-30701,30742
/trunk/blender:36833-37206

Modified: 
branches/soc-2011-onion/source/blender/editors/sculpt_paint/paint_vertex.c
===================================================================
--- branches/soc-2011-onion/source/blender/editors/sculpt_paint/paint_vertex.c  
2011-06-09 21:28:02 UTC (rev 37346)
+++ branches/soc-2011-onion/source/blender/editors/sculpt_paint/paint_vertex.c  
2011-06-09 22:25:53 UTC (rev 37347)
@@ -90,15 +90,6 @@
 
 #include "paint_intern.h"
 
-/* brush->vertexpaint_tool */
-#define VP_MIX 0
-#define VP_ADD 1
-#define VP_SUB 2
-#define VP_MUL 3
-#define VP_BLUR        4
-#define VP_LIGHTEN     5
-#define VP_DARKEN      6
-
 /* polling - retrieve whether cursor should be set or operator should be done 
*/
 
 
@@ -525,154 +516,7 @@
 }
  */
 
-static unsigned int mcol_blend(unsigned int col1, unsigned int col2, int fac)
-{
-       char *cp1, *cp2, *cp;
-       int mfac;
-       unsigned int col=0;
-       
-       if(fac==0) return col1;
-       if(fac>=255) return col2;
-
-       mfac= 255-fac;
-       
-       cp1= (char *)&col1;
-       cp2= (char *)&col2;
-       cp=  (char *)&col;
-       
-       cp[0]= 255;
-       cp[1]= (mfac*cp1[1]+fac*cp2[1])/255;
-       cp[2]= (mfac*cp1[2]+fac*cp2[2])/255;
-       cp[3]= (mfac*cp1[3]+fac*cp2[3])/255;
-       
-       return col;
-}
-
-static unsigned int mcol_add(unsigned int col1, unsigned int col2, int fac)
-{
-       char *cp1, *cp2, *cp;
-       int temp;
-       unsigned int col=0;
-       
-       if(fac==0) return col1;
-       
-       cp1= (char *)&col1;
-       cp2= (char *)&col2;
-       cp=  (char *)&col;
-       
-       cp[0]= 255;
-       temp= cp1[1] + ((fac*cp2[1])/255);
-       if(temp>254) cp[1]= 255; else cp[1]= temp;
-       temp= cp1[2] + ((fac*cp2[2])/255);
-       if(temp>254) cp[2]= 255; else cp[2]= temp;
-       temp= cp1[3] + ((fac*cp2[3])/255);
-       if(temp>254) cp[3]= 255; else cp[3]= temp;
-       
-       return col;
-}
-
-static unsigned int mcol_sub(unsigned int col1, unsigned int col2, int fac)
-{
-       char *cp1, *cp2, *cp;
-       int temp;
-       unsigned int col=0;
-       
-       if(fac==0) return col1;
-       
-       cp1= (char *)&col1;
-       cp2= (char *)&col2;
-       cp=  (char *)&col;
-       
-       cp[0]= 255;
-       temp= cp1[1] - ((fac*cp2[1])/255);
-       if(temp<0) cp[1]= 0; else cp[1]= temp;
-       temp= cp1[2] - ((fac*cp2[2])/255);
-       if(temp<0) cp[2]= 0; else cp[2]= temp;
-       temp= cp1[3] - ((fac*cp2[3])/255);
-       if(temp<0) cp[3]= 0; else cp[3]= temp;
-       
-       return col;
-}
-
-static unsigned int mcol_mul(unsigned int col1, unsigned int col2, int fac)
-{
-       char *cp1, *cp2, *cp;
-       int mfac;
-       unsigned int col=0;
-       
-       if(fac==0) return col1;
-
-       mfac= 255-fac;
-       
-       cp1= (char *)&col1;
-       cp2= (char *)&col2;
-       cp=  (char *)&col;
-       
-       /* first mul, then blend the fac */
-       cp[0]= 255;
-       cp[1]= (mfac*cp1[1] + fac*((cp2[1]*cp1[1])/255)  )/255;
-       cp[2]= (mfac*cp1[2] + fac*((cp2[2]*cp1[2])/255)  )/255;
-       cp[3]= (mfac*cp1[3] + fac*((cp2[3]*cp1[3])/255)  )/255;
-
-       
-       return col;
-}
-
-static unsigned int mcol_lighten(unsigned int col1, unsigned int col2, int fac)
-{
-       char *cp1, *cp2, *cp;
-       int mfac;
-       unsigned int col=0;
-       
-       if(fac==0) return col1;
-       if(fac>=255) return col2;
-
-       mfac= 255-fac;
-       
-       cp1= (char *)&col1;
-       cp2= (char *)&col2;
-       cp=  (char *)&col;
-       
-       /* See if are lighter, if so mix, else dont do anything.
-       if the paint col is darker then the original, then ignore */
-       if (cp1[1]+cp1[2]+cp1[3] > cp2[1]+cp2[2]+cp2[3])
-               return col1;
-       
-       cp[0]= 255;
-       cp[1]= (mfac*cp1[1]+fac*cp2[1])/255;
-       cp[2]= (mfac*cp1[2]+fac*cp2[2])/255;
-       cp[3]= (mfac*cp1[3]+fac*cp2[3])/255;
-       
-       return col;
-}
-
-static unsigned int mcol_darken(unsigned int col1, unsigned int col2, int fac)
-{
-       char *cp1, *cp2, *cp;
-       int mfac;
-       unsigned int col=0;
-       
-       if(fac==0) return col1;
-       if(fac>=255) return col2;
-
-       mfac= 255-fac;
-       
-       cp1= (char *)&col1;
-       cp2= (char *)&col2;
-       cp=  (char *)&col;
-       
-       /* See if were darker, if so mix, else dont do anything.
-       if the paint col is brighter then the original, then ignore */
-       if (cp1[1]+cp1[2]+cp1[3] < cp2[1]+cp2[2]+cp2[3])
-               return col1;
-       
-       cp[0]= 255;
-       cp[1]= (mfac*cp1[1]+fac*cp2[1])/255;
-       cp[2]= (mfac*cp1[2]+fac*cp2[2])/255;
-       cp[3]= (mfac*cp1[3]+fac*cp2[3])/255;
-       return col;
-}
-
+/*
 static void vpaint_blend(VPaint *vp, unsigned int *col, unsigned int *colorig, 
unsigned int paintcol, int alpha)
 {
        Brush *brush = paint_brush(&vp->paint);
@@ -684,7 +528,7 @@
        else if(brush->vertexpaint_tool==VP_LIGHTEN) *col= mcol_lighten( *col, 
paintcol, alpha);
        else if(brush->vertexpaint_tool==VP_DARKEN) *col= mcol_darken( *col, 
paintcol, alpha);
        
-       /* if no spray, clip color adding with colorig & orig alpha */
+       // if no spray, clip color adding with colorig & orig alpha
        if((vp->flag & VP_SPRAY)==0) {
                unsigned int testcol=0, a;
                char *cp, *ct, *co;
@@ -714,8 +558,8 @@
                }
        }
 }
+*/
 
-
 static int sample_backbuf_area(ViewContext *vc, int *indexar, int totface, int 
x, int y, float size)
 {
        struct ImBuf *ibuf;
@@ -805,32 +649,32 @@
        
        if (flip) {
                switch(tool) {
-                       case VP_MIX:
+                       case IMB_BLEND_MIX:
                                paintval = 1.f - paintval; break;
-                       case VP_ADD:
-                               tool= VP_SUB; break;
-                       case VP_SUB:
-                               tool= VP_ADD; break;
-                       case VP_LIGHTEN:
-                               tool= VP_DARKEN; break;
-                       case VP_DARKEN:
-                               tool= VP_LIGHTEN; break;
+                       case IMB_BLEND_ADD:
+                               tool= IMB_BLEND_SUB; break;
+                       case IMB_BLEND_SUB:
+                               tool= IMB_BLEND_ADD; break;
+                       case IMB_BLEND_LIGHTEN:
+                               tool= IMB_BLEND_DARKEN; break;
+                       case IMB_BLEND_DARKEN:
+                               tool= IMB_BLEND_LIGHTEN; break;
                }
        }
        
-       if(tool==VP_MIX || tool==VP_BLUR)
+       if(tool==IMB_BLEND_MIX || tool==VERTEX_PAINT_BLUR)
                dw->weight = paintval*alpha + dw->weight*(1.0f-alpha);
-       else if(tool==VP_ADD)
+       else if(tool==IMB_BLEND_ADD)
                dw->weight += paintval*alpha;
-       else if(tool==VP_SUB) 
+       else if(tool==IMB_BLEND_SUB) 
                dw->weight -= paintval*alpha;
-       else if(tool==VP_MUL) 
+       else if(tool==IMB_BLEND_MUL) 
                /* first mul, then blend the fac */
                dw->weight = ((1.0f-alpha) + alpha*paintval)*dw->weight;
-       else if(tool==VP_LIGHTEN) {
+       else if(tool==IMB_BLEND_LIGHTEN) {
                if (dw->weight < paintval)
                        dw->weight = paintval*alpha + dw->weight*(1.0f-alpha);
-       } else if(tool==VP_DARKEN) {
+       } else if(tool==IMB_BLEND_DARKEN) {
                if (dw->weight > paintval)
                        dw->weight = paintval*alpha + dw->weight*(1.0f-alpha);
        }
@@ -841,21 +685,21 @@
                float testw=0.0f;
                
                alpha= brush_alpha(brush);
-               if(tool==VP_MIX || tool==VP_BLUR)
+               if(tool==IMB_BLEND_MIX || tool==VERTEX_PAINT_BLUR)
                        testw = paintval*alpha + uw->weight*(1.0f-alpha);
-               else if(tool==VP_ADD)
+               else if(tool==IMB_BLEND_ADD)
                        testw = uw->weight + paintval*alpha;
-               else if(tool==VP_SUB) 
+               else if(tool==IMB_BLEND_SUB) 
                        testw = uw->weight - paintval*alpha;
-               else if(tool==VP_MUL) 
+               else if(tool==IMB_BLEND_MUL) 
                        /* first mul, then blend the fac */
                        testw = ((1.0f-alpha) + alpha*paintval)*uw->weight;
-               else if(tool==VP_LIGHTEN) {
+               else if(tool==IMB_BLEND_LIGHTEN) {
                        if (uw->weight < paintval)
                                testw = paintval*alpha + 
uw->weight*(1.0f-alpha);
                        else
                                testw = uw->weight;
-               } else if(tool==VP_DARKEN) {
+               } else if(tool==IMB_BLEND_DARKEN) {
                        if (uw->weight > paintval)
                                testw = paintval*alpha + 
uw->weight*(1.0f-alpha);
                        else
@@ -1456,7 +1300,7 @@
        /* make sure each vertex gets treated only once */
        /* and calculate filter weight */
        totw= 0;
-       if(brush->vertexpaint_tool==VP_BLUR) 
+       if(brush->vertexpaint_tool==VERTEX_PAINT_BLUR) 
                paintweight= 0.0f;
        else
                paintweight= ts->vgroup_weight;
@@ -1470,7 +1314,7 @@
                        (me->dvert+mface->v3)->flag= 1;
                        if(mface->v4) (me->dvert+mface->v4)->flag= 1;
                                        
-                       if(brush->vertexpaint_tool==VP_BLUR) {
+                       if(brush->vertexpaint_tool==VERTEX_PAINT_BLUR) {
                                MDeformWeight *dw, *(*dw_func)(MDeformVert *, 
const int);
                                                
                                if(wp->flag & VP_ONLYVGROUP)
@@ -1492,7 +1336,7 @@
                }
        }
                        
-       if(brush->vertexpaint_tool==VP_BLUR) 
+       if(brush->vertexpaint_tool==VERTEX_PAINT_BLUR) 
                paintweight/= (float)totw;
                        
        for(index=0; index<totindex; index++) {
@@ -1833,9 +1677,12 @@
                strength = brush->alpha *
                        brush_curve_strength(brush, dist,
                                             radius);
+               
+               if(brush->vertexpaint_tool != VERTEX_PAINT_BLUR) {
+                       IMB_blend_color_float(col, col, paint_col, strength,
+                                             brush->vertexpaint_tool);
+               }
 
-               IMB_blend_color_float(col, col, paint_col, strength, 
IMB_BLEND_MIX /* TODO */);
-
                return 1;
        }
 
@@ -2041,9 +1888,9 @@
                        unsigned int *col = (unsigned int*)(mcol + cndx);
                        unsigned int *orig_col = (unsigned int*)(orig + cndx);
 
-                       vpaint_blend(vp, col, orig_col,
+                       /*vpaint_blend(vp, col, orig_col,
                                     vpd->paintcol,
-                                    brush->alpha * 255);
+                                    brush->alpha * 255);*/
                }
 
                BLI_pbvh_node_set_flags(hit_data.node,
@@ -2087,9 +1934,9 @@
                vpaint_color_one_face(C, stroke, itemptr);
        }
 
-       /* was disabled because it is slow, but necessary for blur */
+       /* XXX
        if(brush->vertexpaint_tool == VP_BLUR)
-               do_shared_vertexcol(ob->data);
+       do_shared_vertexcol(ob->data);*/
 
        /* partial redraw */
        paint_tag_partial_redraw(C, ob);

Modified: branches/soc-2011-onion/source/blender/makesdna/DNA_brush_types.h
===================================================================
--- branches/soc-2011-onion/source/blender/makesdna/DNA_brush_types.h   
2011-06-09 21:28:02 UTC (rev 37346)
+++ branches/soc-2011-onion/source/blender/makesdna/DNA_brush_types.h   
2011-06-09 22:25:53 UTC (rev 37347)
@@ -171,6 +171,9 @@
        SCULPT_TOOL_MASK        = 20,
 } SculptTool;
 
+/* Brush.vertexpaint_tool */
+#define VERTEX_PAINT_BLUR -1
+/* The other vpaint tools are in IMB_BlendMode */
 /* ImagePaintSettings.tool */
 #define PAINT_TOOL_DRAW                0
 #define PAINT_TOOL_SOFTEN      1

Modified: branches/soc-2011-onion/source/blender/makesrna/intern/rna_brush.c
===================================================================
--- branches/soc-2011-onion/source/blender/makesrna/intern/rna_brush.c  
2011-06-09 21:28:02 UTC (rev 37346)
+++ branches/soc-2011-onion/source/blender/makesrna/intern/rna_brush.c  
2011-06-09 22:25:53 UTC (rev 37347)
@@ -409,6 +409,66 @@
                {BRUSH_AIRBRUSH, "AIRBRUSH", 0, "Airbrush", "Keep applying 
paint effect while holding mouse (spray)"},
                {0, NULL, 0, NULL, NULL}};
 
+       static EnumPropertyItem texture_angle_source_items[] = {
+               {0, "USER", 0, "User", ""},
+               {BRUSH_RAKE, "RAKE", 0, "Rake", ""},

@@ 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