Revision: 48954
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48954
Author:   campbellbarton
Date:     2012-07-16 08:48:06 +0000 (Mon, 16 Jul 2012)
Log Message:
-----------
svn merge ^/trunk/blender -r48937:48953

Revision Links:
--------------
    
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48937

Modified Paths:
--------------
    branches/soc-2011-tomato/build_files/cmake/macros.cmake
    branches/soc-2011-tomato/source/blender/blenkernel/intern/mask_rasterize.c
    branches/soc-2011-tomato/source/blender/blenlib/BLI_math_geom.h
    branches/soc-2011-tomato/source/blender/blenlib/intern/math_geom.c
    branches/soc-2011-tomato/source/blender/compositor/SConscript
    branches/soc-2011-tomato/source/blender/editors/include/ED_object.h
    branches/soc-2011-tomato/source/blender/editors/object/object_relations.c
    branches/soc-2011-tomato/source/blender/editors/space_node/node_edit.c
    
branches/soc-2011-tomato/source/blender/editors/space_outliner/outliner_edit.c
    branches/soc-2011-tomato/source/blender/makesdna/DNA_mask_types.h
    branches/soc-2011-tomato/source/blender/makesrna/intern/rna_mask.c
    
branches/soc-2011-tomato/source/blender/nodes/composite/node_composite_tree.c
    branches/soc-2011-tomato/source/blender/windowmanager/intern/wm_init_exit.c
    branches/soc-2011-tomato/source/creator/CMakeLists.txt
    branches/soc-2011-tomato/source/gameengine/Converter/BL_ActionActuator.cpp

Property Changed:
----------------
    branches/soc-2011-tomato/
    branches/soc-2011-tomato/source/blender/editors/interface/interface.c
    branches/soc-2011-tomato/source/blender/editors/space_outliner/


Property changes on: branches/soc-2011-tomato
___________________________________________________________________
Modified: svn:mergeinfo
   - 
/branches/ge_harmony:42255,42279-42282,42286,42302,42338,42349,42616,42620,42698-42699,42739,42753,42773-42774,42832,44568,44597-44598,44793-44794
/branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/vgroup_modifiers:38694-39989
/trunk/blender:36831-48937
   + 
/branches/ge_harmony:42255,42279-42282,42286,42302,42338,42349,42616,42620,42698-42699,42739,42753,42773-42774,42832,44568,44597-44598,44793-44794
/branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/vgroup_modifiers:38694-39989
/trunk/blender:36831-48953

Modified: branches/soc-2011-tomato/build_files/cmake/macros.cmake
===================================================================
--- branches/soc-2011-tomato/build_files/cmake/macros.cmake     2012-07-16 
08:42:55 UTC (rev 48953)
+++ branches/soc-2011-tomato/build_files/cmake/macros.cmake     2012-07-16 
08:48:06 UTC (rev 48954)
@@ -23,6 +23,25 @@
 #
 # ***** END GPL LICENSE BLOCK *****
 
+macro(list_insert_after
+       list_id item_check item_add
+       )
+       set(_index)
+       list(FIND ${list_id} "${item_check}" _index)
+       math(EXPR _index "${_index} + 1")
+       list(INSERT ${list_id} "${_index}" ${item_add})
+       unset(_index)
+endmacro()
+
+macro(list_insert_before
+       list_id item_check item_add
+       )
+       set(_index)
+       list(FIND ${list_id} "${item_check}" _index)
+       list(INSERT ${list_id} "${_index}" ${item_add})
+       unset(_index)
+endmacro()
+
 # foo_bar.spam --> foo_barMySuffix.spam
 macro(file_suffix
        file_name_new file_name file_suffix

Modified: 
branches/soc-2011-tomato/source/blender/blenkernel/intern/mask_rasterize.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/mask_rasterize.c  
2012-07-16 08:42:55 UTC (rev 48953)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/mask_rasterize.c  
2012-07-16 08:48:06 UTC (rev 48954)
@@ -356,10 +356,10 @@
                                const float *v2 = cos[face[1]];
                                const float *v3 = cos[face[2]];
 
-                               xmin = fminf(v1[0], fminf(v2[0], v3[0]));
-                               xmax = fmaxf(v1[0], fmaxf(v2[0], v3[0]));
-                               ymin = fminf(v1[1], fminf(v2[1], v3[1]));
-                               ymax = fmaxf(v1[1], fmaxf(v2[1], v3[1]));
+                               xmin = minf(v1[0], minf(v2[0], v3[0]));
+                               xmax = maxf(v1[0], maxf(v2[0], v3[0]));
+                               ymin = minf(v1[1], minf(v2[1], v3[1]));
+                               ymax = maxf(v1[1], maxf(v2[1], v3[1]));
                        }
                        else {
                                const float *v1 = cos[face[0]];
@@ -367,10 +367,10 @@
                                const float *v3 = cos[face[2]];
                                const float *v4 = cos[face[3]];
 
-                               xmin = fminf(v1[0], fminf(v2[0], fminf(v3[0], 
v4[0])));
-                               xmax = fmaxf(v1[0], fmaxf(v2[0], fmaxf(v3[0], 
v4[0])));
-                               ymin = fminf(v1[1], fminf(v2[1], fminf(v3[1], 
v4[1])));
-                               ymax = fmaxf(v1[1], fmaxf(v2[1], fmaxf(v3[1], 
v4[1])));
+                               xmin = minf(v1[0], minf(v2[0], minf(v3[0], 
v4[0])));
+                               xmax = maxf(v1[0], maxf(v2[0], maxf(v3[0], 
v4[0])));
+                               ymin = minf(v1[1], minf(v2[1], minf(v3[1], 
v4[1])));
+                               ymax = maxf(v1[1], maxf(v2[1], maxf(v3[1], 
v4[1])));
                        }
 
 
@@ -617,10 +617,6 @@
                                                        sf_vert_tot++;
                                                }
 
-                                               if (diff_feather_points) {
-                                                       
MEM_freeN(diff_feather_points);
-                                               }
-
                                                tot_feather_quads += 
tot_diff_point;
                                        }
                                }
@@ -673,8 +669,6 @@
                                                        tot_feather_quads -= 2;
                                                }
 
-                                               MEM_freeN(diff_feather_points);
-
                                                /* ack these are infact tris, 
but they are extra faces so no matter,
                                                 * +1 becausing adding one vert 
results in 2 tris (joining the existing endpoints)
                                                 */
@@ -687,9 +681,13 @@
                        if (diff_points) {
                                MEM_freeN(diff_points);
                        }
+
+                       if (diff_feather_points) {
+                               MEM_freeN(diff_feather_points);
+                       }
                }
 
-               if (sf_ctx.fillvertbase.first) {
+               {
                        unsigned int (*face_array)[4], *face;  /* access coords 
*/
                        float        (*face_coords)[3], *cos; /* xy, z 0-1 (1.0 
== filled) */
                        int sf_tri_tot;
@@ -727,9 +725,9 @@
                        /* tri's */
                        face = (unsigned int *)face_array;
                        for (sf_tri = sf_ctx.fillfacebase.first, face_index = 
0; sf_tri; sf_tri = sf_tri->next, face_index++) {
+                               *(face++) = sf_tri->v3->tmp.u;
+                               *(face++) = sf_tri->v2->tmp.u;
                                *(face++) = sf_tri->v1->tmp.u;
-                               *(face++) = sf_tri->v2->tmp.u;
-                               *(face++) = sf_tri->v3->tmp.u;
                                *(face++) = TRI_VERT;
                        }
 
@@ -881,7 +879,7 @@
                    (cos[1][2] < dist_orig) ||
                    (cos[2][2] < dist_orig))
                {
-                       if (isect_point_tri_v2(xy, cos[face[0]], cos[face[1]], 
cos[face[2]])) {
+                       if (isect_point_tri_v2_cw(xy, cos[face[0]], 
cos[face[1]], cos[face[2]])) {
                                /* we know all tris are close for now */
                                return maskrasterize_layer_z_depth_tri(xy, 
cos[face[0]], cos[face[1]], cos[face[2]]);
                        }
@@ -889,7 +887,7 @@
 #else
                /* we know all tris are close for now */
                if (1) {
-                       if (isect_point_tri_v2(xy, cos[face[0]], cos[face[1]], 
cos[face[2]])) {
+                       if (isect_point_tri_v2_cw(xy, cos[face[0]], 
cos[face[1]], cos[face[2]])) {
                                return 0.0f;
                        }
                }
@@ -911,6 +909,8 @@
                                return maskrasterize_layer_z_depth_quad(xy, 
cos[face[0]], cos[face[1]], cos[face[2]], cos[face[3]]);
                        }
 #elif 1
+                       /* don't use isect_point_tri_v2_cw because we could 
have bowtie quads */
+
                        if (isect_point_tri_v2(xy, cos[face[0]], cos[face[1]], 
cos[face[2]])) {
                                return maskrasterize_layer_z_depth_tri(xy, 
cos[face[0]], cos[face[1]], cos[face[2]]);
                        }
@@ -979,21 +979,21 @@
                float value_layer;
 
                if (BLI_in_rctf_v(&layer->bounds, xy)) {
-                       float val = 1.0f - layer_bucket_depth_from_xy(layer, 
xy);
+                       value_layer = 1.0f - layer_bucket_depth_from_xy(layer, 
xy);
 
                        switch (layer->falloff) {
                                case PROP_SMOOTH:
                                        /* ease - gives less hard lines for 
dilate/erode feather */
-                                       val = (3.0f * val * val - 2.0f * val * 
val * val);
+                                       value_layer = (3.0f * value_layer * 
value_layer - 2.0f * value_layer * value_layer * value_layer);
                                        break;
                                case PROP_SPHERE:
-                                       val = sqrtf(2.0f * val - val * val);
+                                       value_layer = sqrtf(2.0f * value_layer 
- value_layer * value_layer);
                                        break;
                                case PROP_ROOT:
-                                       val = sqrtf(val);
+                                       value_layer = sqrtf(value_layer);
                                        break;
                                case PROP_SHARP:
-                                       val = val * val;
+                                       value_layer = value_layer * value_layer;
                                        break;
                                case PROP_LIN:
                                default:
@@ -1001,7 +1001,9 @@
                                        break;
                        }
 
-                       value_layer = val * layer->alpha;
+                       if (layer->blend != MASK_BLEND_REPLACE) {
+                               value_layer *= layer->alpha;
+                       }
                }
                else {
                        value_layer = 0.0f;
@@ -1012,17 +1014,28 @@
                }
 
                switch (layer->blend) {
+                       case MASK_BLEND_ADD:
+                               value += value_layer;
+                               break;
                        case MASK_BLEND_SUBTRACT:
-                       {
                                value -= value_layer;
                                break;
-                       }
-                       case MASK_BLEND_ADD:
-                       default:
-                       {
+                       case MASK_BLEND_LIGHTEN:
+                               value = maxf(value, value_layer);
+                               break;
+                       case MASK_BLEND_DARKEN:
+                               value = minf(value, value_layer);
+                               break;
+                       case MASK_BLEND_MUL:
+                               value *= value_layer;
+                               break;
+                       case MASK_BLEND_REPLACE:
+                               value = (value * (1.0f - layer->alpha)) + 
(value_layer * layer->alpha);
+                               break;
+                       default: /* same as add */
+                               BLI_assert(0);
                                value += value_layer;
                                break;
-                       }
                }
        }
 

Modified: branches/soc-2011-tomato/source/blender/blenlib/BLI_math_geom.h
===================================================================
--- branches/soc-2011-tomato/source/blender/blenlib/BLI_math_geom.h     
2012-07-16 08:42:55 UTC (rev 48953)
+++ branches/soc-2011-tomato/source/blender/blenlib/BLI_math_geom.h     
2012-07-16 08:48:06 UTC (rev 48954)
@@ -87,6 +87,7 @@
 #define ISECT_LINE_LINE_EXACT        1
 #define ISECT_LINE_LINE_CROSS        2
 
+int isect_line_line_v2_point(const float v1[2], const float v2[2], const float 
v3[2], const float v4[2], float vi[2]);
 int isect_line_line_v2(const float a1[2], const float a2[2], const float 
b1[2], const float b2[2]);
 int isect_line_line_v2_int(const int a1[2], const int a2[2], const int b1[2], 
const int b2[2]);
 int isect_line_sphere_v3(const float l1[3], const float l2[3], const float 
sp[3], const float r, float r_p1[3], float r_p2[3]);
@@ -153,6 +154,7 @@
 int isect_point_quad_v2(const float p[2], const float a[2], const float b[2], 
const float c[2], const float d[2]);
 
 int isect_point_tri_v2(const float v1[2], const float v2[2], const float 
v3[2], const float pt[2]);
+int isect_point_tri_v2_cw(const float pt[2], const float v1[2], const float 
v2[2], const float v3[2]);
 int isect_point_tri_v2_int(const int x1, const int y1, const int x2, const int 
y2, const int a, const int b);
 int isect_point_tri_prism_v3(const float p[3], const float v1[3], const float 
v2[3], const float v3[3]);
 

Modified: branches/soc-2011-tomato/source/blender/blenlib/intern/math_geom.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenlib/intern/math_geom.c  
2012-07-16 08:42:55 UTC (rev 48953)
+++ branches/soc-2011-tomato/source/blender/blenlib/intern/math_geom.c  
2012-07-16 08:48:06 UTC (rev 48954)
@@ -317,6 +317,21 @@
        return ISECT_LINE_LINE_NONE;
 }
 
+/* intersect Line-Line, floats - gives intersection point */
+int isect_line_line_v2_point(const float v1[2], const float v2[2], const float 
v3[2], const float v4[2], float vi[2])
+{
+       float div;
+
+       div = (v2[0] - v1[0]) * (v4[1] - v3[1]) - (v2[1] - v1[1]) * (v4[0] - 
v3[0]);
+       if (div == 0.0f) return ISECT_LINE_LINE_COLINEAR;
+
+       vi[0] = ((v3[0] - v4[0]) * (v1[0] * v2[1] - v1[1] * v2[0]) - (v1[0] - 
v2[0]) * (v3[0] * v4[1] - v3[1] * v4[0])) / div;
+       vi[1] = ((v3[1] - v4[1]) * (v1[0] * v2[1] - v1[1] * v2[0]) - (v1[1] - 
v2[1]) * (v3[0] * v4[1] - v3[1] * v4[0])) / div;
+
+       return ISECT_LINE_LINE_CROSS;
+}
+
+
 /* intersect Line-Line, floats */
 int isect_line_line_v2(const float v1[2], const float v2[2], const float 
v3[2], const float v4[2])
 {
@@ -591,6 +606,20 @@
 
 /* point in tri */
 
+/* only single direction */
+int isect_point_tri_v2_cw(const float pt[2], const float v1[2], const float 
v2[2], const float v3[2])
+{
+       if (line_point_side_v2(v1, v2, pt) >= 0.0f) {
+               if (line_point_side_v2(v2, v3, pt) >= 0.0f) {
+                       if (line_point_side_v2(v3, v1, pt) >= 0.0f) {
+                               return 1;
+                       }
+               }
+       }
+
+       return 0;
+}
+
 int isect_point_tri_v2(const float pt[2], const float v1[2], const float 
v2[2], const float v3[2])
 {

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