Revision: 48795
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48795
Author:   nazgul
Date:     2012-07-10 10:11:54 +0000 (Tue, 10 Jul 2012)
Log Message:
-----------
Merging r48755 through r48793 from trunk into soc-2011-tomato

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

Modified Paths:
--------------
    branches/soc-2011-tomato/intern/raskter/CMakeLists.txt
    branches/soc-2011-tomato/intern/raskter/raskter.c
    branches/soc-2011-tomato/intern/raskter/raskter.h
    
branches/soc-2011-tomato/release/scripts/modules/bl_i18n_utils/bl_process_msg.py
    branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_userpref.py
    branches/soc-2011-tomato/source/blender/blenfont/BLF_translation.h
    branches/soc-2011-tomato/source/blender/blenfont/intern/blf_lang.c
    branches/soc-2011-tomato/source/blender/blenkernel/BKE_mask.h
    branches/soc-2011-tomato/source/blender/blenkernel/intern/fcurve.c
    branches/soc-2011-tomato/source/blender/blenkernel/intern/mask.c
    branches/soc-2011-tomato/source/blender/blenkernel/intern/node.c
    branches/soc-2011-tomato/source/blender/blenlib/BLI_string.h
    branches/soc-2011-tomato/source/blender/blenlib/BLI_threads.h
    branches/soc-2011-tomato/source/blender/blenlib/intern/string.c
    branches/soc-2011-tomato/source/blender/collada/ImageExporter.cpp
    
branches/soc-2011-tomato/source/blender/compositor/intern/COM_MemoryBuffer.cpp
    branches/soc-2011-tomato/source/blender/compositor/intern/COM_MemoryBuffer.h
    branches/soc-2011-tomato/source/blender/compositor/nodes/COM_DefocusNode.cpp
    
branches/soc-2011-tomato/source/blender/compositor/operations/COM_ConvertDepthToRadiusOperation.cpp
    
branches/soc-2011-tomato/source/blender/compositor/operations/COM_ConvertDepthToRadiusOperation.h
    
branches/soc-2011-tomato/source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp
    
branches/soc-2011-tomato/source/blender/compositor/operations/COM_FastGaussianBlurOperation.h
    
branches/soc-2011-tomato/source/blender/compositor/operations/COM_MaskOperation.h
    
branches/soc-2011-tomato/source/blender/compositor/operations/COM_OpenCLKernels.cl
    
branches/soc-2011-tomato/source/blender/compositor/operations/COM_OpenCLKernels.cl.h
    
branches/soc-2011-tomato/source/blender/compositor/operations/COM_VariableSizeBokehBlurOperation.cpp
    
branches/soc-2011-tomato/source/blender/compositor/operations/COM_VariableSizeBokehBlurOperation.h
    branches/soc-2011-tomato/source/blender/editors/animation/anim_deps.c
    branches/soc-2011-tomato/source/blender/editors/animation/anim_filter.c
    branches/soc-2011-tomato/source/blender/editors/animation/anim_ipo_utils.c
    branches/soc-2011-tomato/source/blender/editors/armature/poseobject.c
    branches/soc-2011-tomato/source/blender/editors/include/UI_interface.h
    branches/soc-2011-tomato/source/blender/editors/interface/interface.c
    
branches/soc-2011-tomato/source/blender/editors/interface/interface_handlers.c
    branches/soc-2011-tomato/source/blender/editors/interface/interface_ops.c
    
branches/soc-2011-tomato/source/blender/editors/interface/interface_regions.c
    branches/soc-2011-tomato/source/blender/editors/space_node/drawnode.c
    branches/soc-2011-tomato/source/blender/editors/space_node/node_draw.c
    branches/soc-2011-tomato/source/blender/editors/space_node/node_intern.h
    
branches/soc-2011-tomato/source/blender/editors/transform/transform_conversions.c
    branches/soc-2011-tomato/source/blender/editors/uvedit/uvedit_ops.c
    branches/soc-2011-tomato/source/blender/editors/uvedit/uvedit_parametrizer.c
    branches/soc-2011-tomato/source/blender/editors/uvedit/uvedit_parametrizer.h
    branches/soc-2011-tomato/source/blender/editors/uvedit/uvedit_unwrap_ops.c
    branches/soc-2011-tomato/source/blender/makesdna/DNA_meshdata_types.h
    branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h
    branches/soc-2011-tomato/source/blender/makesdna/DNA_userdef_types.h
    branches/soc-2011-tomato/source/blender/makesrna/RNA_access.h
    branches/soc-2011-tomato/source/blender/makesrna/intern/rna_access.c
    branches/soc-2011-tomato/source/blender/makesrna/intern/rna_userdef.c
    branches/soc-2011-tomato/source/gameengine/Ketsji/KX_Scene.cpp
    
branches/soc-2011-tomato/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp

Added Paths:
-----------
    branches/soc-2011-tomato/intern/raskter/raskter_kdtree.c
    branches/soc-2011-tomato/intern/raskter/raskter_kdtree.h
    branches/soc-2011-tomato/intern/raskter/raskter_mt.c

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/
    branches/soc-2011-tomato/source/tools/


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-48754
   + 
/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-48793

Modified: branches/soc-2011-tomato/intern/raskter/CMakeLists.txt
===================================================================
--- branches/soc-2011-tomato/intern/raskter/CMakeLists.txt      2012-07-10 
09:31:08 UTC (rev 48794)
+++ branches/soc-2011-tomato/intern/raskter/CMakeLists.txt      2012-07-10 
10:11:54 UTC (rev 48795)
@@ -33,8 +33,11 @@
 
 set(SRC
        raskter.c
+       raskter_mt.c
+       raskter_kdtree.c
 
        raskter.h
+       raskter_kdtree.h
 )
 
 blender_add_lib(bf_intern_raskter "${SRC}" "${INC}" "${INC_SYS}")

Modified: branches/soc-2011-tomato/intern/raskter/raskter.c
===================================================================
--- branches/soc-2011-tomato/intern/raskter/raskter.c   2012-07-10 09:31:08 UTC 
(rev 48794)
+++ branches/soc-2011-tomato/intern/raskter/raskter.c   2012-07-10 10:11:54 UTC 
(rev 48795)
@@ -30,37 +30,14 @@
 
 #include <stdlib.h>
 #include "raskter.h"
+//#define __PLX__FAKE_AA__
+//#define __PLX_KD_TREE__
+#ifdef __PLX_KD_TREE__
+#include "kdtree.h"
+#endif
 
-#define __PLX__FAKE_AA__
 
-/* from BLI_utildefines.h */
-#define MIN2(x, y)      ( (x) < (y) ? (x) : (y) )
-#define MAX2(x, y)      ( (x) > (y) ? (x) : (y) )
-#define ABS(a)          ( (a) < 0 ? (-(a)) : (a) )
 
-struct e_status {
-       int x;
-       int ybeg;
-       int xshift;
-       int xdir;
-       int drift;
-       int drift_inc;
-       int drift_dec;
-       int num;
-       struct e_status *e_next;
-};
-
-struct r_buffer_stats {
-       float *buf;
-       int sizex;
-       int sizey;
-};
-
-struct r_fill_context {
-       struct e_status *all_edges, *possible_edges;
-       struct r_buffer_stats rb;
-};
-
 /*
  * Sort all the edges of the input polygon by Y, then by X, of the "first" 
vertex encountered.
  * This will ensure we can scan convert the entire poly in one pass.
@@ -69,102 +46,113 @@
  * just the poly. Since the DEM code could end up being coupled with this, 
we'll keep it separate
  * for now.
  */
-static void preprocess_all_edges(struct r_fill_context *ctx, struct poly_vert 
*verts, int num_verts, struct e_status *open_edge)
-{
-       int i;
-       int xbeg;
-       int ybeg;
-       int xend;
-       int yend;
-       int dx;
-       int dy;
-       int temp_pos;
-       int xdist;
-       struct e_status *e_new;
-       struct e_status *next_edge;
-       struct e_status **next_edge_ref;
-       struct poly_vert *v;
-       /* set up pointers */
-       v = verts;
-       ctx->all_edges = NULL;
-       /* loop all verts */
-       for (i = 0; i < num_verts; i++) {
-               /* determine beginnings and endings of edges, linking last 
vertex to first vertex */
-               xbeg = v[i].x;
-               ybeg = v[i].y;
-               if (i) {
-                       /* we're not at the last vert, so end of the edge is 
the previous vertex */
-                       xend = v[i - 1].x;
-                       yend = v[i - 1].y;
-               }
-               else {
-                       /* we're at the first vertex, so the "end" of this edge 
is the last vertex */
-                       xend = v[num_verts - 1].x;
-                       yend = v[num_verts - 1].y;
-               }
-               /* make sure our edges are facing the correct direction */
-               if (ybeg > yend) {
-                       /* flip the Xs */
-                       temp_pos = xbeg;
-                       xbeg = xend;
-                       xend = temp_pos;
-                       /* flip the Ys */
-                       temp_pos = ybeg;
-                       ybeg = yend;
-                       yend = temp_pos;
-               }
+void preprocess_all_edges(struct r_fill_context *ctx, struct poly_vert *verts, 
int num_verts, struct e_status *open_edge) {
+    int i;
+    int xbeg;
+    int ybeg;
+    int xend;
+    int yend;
+    int dx;
+    int dy;
+    int temp_pos;
+    int xdist;
+    struct e_status *e_new;
+    struct e_status *next_edge;
+    struct e_status **next_edge_ref;
+    struct poly_vert *v;
+    /* set up pointers */
+    v = verts;
+    ctx->all_edges = NULL;
+    /* initialize some boundaries */
+    ctx->rb.xmax = v[0].x;
+    ctx->rb.xmin = v[0].x;
+    ctx->rb.ymax = v[0].y;
+    ctx->rb.ymin = v[0].y;
+    /* loop all verts */
+    for(i = 0; i < num_verts; i++) {
+        /* determine beginnings and endings of edges, linking last vertex to 
first vertex */
+        xbeg = v[i].x;
+        ybeg = v[i].y;
+        /* keep track of our x and y bounds */
+        if(xbeg >= ctx->rb.xmax) {
+            ctx->rb.xmax = xbeg;
+        } else if(xbeg <= ctx->rb.xmin) {
+            ctx->rb.xmin = xbeg;
+        }
+        if(ybeg >= ctx->rb.ymax) {
+            ctx->rb.ymax= ybeg;
+        } else if(ybeg <= ctx->rb.ymin) {
+            ctx->rb.ymin=ybeg;
+        }
+        if(i) {
+            /* we're not at the last vert, so end of the edge is the previous 
vertex */
+            xend = v[i - 1].x;
+            yend = v[i - 1].y;
+        } else {
+            /* we're at the first vertex, so the "end" of this edge is the 
last vertex */
+            xend = v[num_verts - 1].x;
+            yend = v[num_verts - 1].y;
+        }
+        /* make sure our edges are facing the correct direction */
+        if(ybeg > yend) {
+            /* flip the Xs */
+            temp_pos = xbeg;
+            xbeg = xend;
+            xend = temp_pos;
+            /* flip the Ys */
+            temp_pos = ybeg;
+            ybeg = yend;
+            yend = temp_pos;
+        }
 
-               /* calculate y delta */
-               dy = yend - ybeg;
-               /* dont draw horizontal lines directly, they are scanned as 
part of the edges they connect, so skip em. :) */
-               if (dy) {
-                       /* create the edge and determine it's slope (for 
incremental line drawing) */
-                       e_new = open_edge++;
+        /* calculate y delta */
+        dy = yend - ybeg;
+        /* dont draw horizontal lines directly, they are scanned as part of 
the edges they connect, so skip em. :) */
+        if(dy) {
+            /* create the edge and determine it's slope (for incremental line 
drawing) */
+            e_new = open_edge++;
 
-                       /* calculate x delta */
-                       dx = xend - xbeg;
-                       if (dx > 0) {
-                               e_new->xdir = 1;
-                               xdist = dx;
-                       }
-                       else {
-                               e_new->xdir = -1;
-                               xdist = -dx;
-                       }
+            /* calculate x delta */
+            dx = xend - xbeg;
+            if(dx > 0) {
+                e_new->xdir = 1;
+                xdist = dx;
+            } else {
+                e_new->xdir = -1;
+                xdist = -dx;
+            }
 
-                       e_new->x = xbeg;
-                       e_new->ybeg = ybeg;
-                       e_new->num = dy;
-                       e_new->drift_dec = dy;
+            e_new->x = xbeg;
+            e_new->ybeg = ybeg;
+            e_new->num = dy;
+            e_new->drift_dec = dy;
 
-                       /* calculate deltas for incremental drawing */
-                       if (dx >= 0) {
-                               e_new->drift = 0;
-                       }
-                       else {
-                               e_new->drift = -dy + 1;
-                       }
-                       if (dy >= xdist) {
-                               e_new->drift_inc = xdist;
-                               e_new->xshift = 0;
-                       }
-                       else {
-                               e_new->drift_inc = xdist % dy;
-                               e_new->xshift = (xdist / dy) * e_new->xdir;
-                       }
-                       next_edge_ref = &ctx->all_edges;
-                       /* link in all the edges, in sorted order */
-                       for (;; ) {
-                               next_edge = *next_edge_ref;
-                               if (!next_edge || (next_edge->ybeg > ybeg) || 
((next_edge->ybeg == ybeg) && (next_edge->x >= xbeg))) {
-                                       e_new->e_next = next_edge;
-                                       *next_edge_ref = e_new;
-                                       break;
-                               }
-                               next_edge_ref = &next_edge->e_next;
-                       }
-               }
-       }
+            /* calculate deltas for incremental drawing */
+            if(dx >= 0) {
+                e_new->drift = 0;
+            } else {
+                e_new->drift = -dy + 1;
+            }
+            if(dy >= xdist) {
+                e_new->drift_inc = xdist;
+                e_new->xshift = 0;
+            } else {
+                e_new->drift_inc = xdist % dy;
+                e_new->xshift = (xdist / dy) * e_new->xdir;
+            }
+            next_edge_ref = &ctx->all_edges;
+            /* link in all the edges, in sorted order */
+            for(;;) {
+                next_edge = *next_edge_ref;
+                if(!next_edge || (next_edge->ybeg > ybeg) || ((next_edge->ybeg 
== ybeg) && (next_edge->x >= xbeg))) {
+                    e_new->e_next = next_edge;
+                    *next_edge_ref = e_new;
+                    break;
+                }
+                next_edge_ref = &next_edge->e_next;
+            }
+        }
+    }
 }
 
 /*
@@ -172,281 +160,275 @@
  * for speed, but waiting on final design choices for curve-data before 
eliminating data the DEM code will need
  * if it ends up being coupled with this function.
  */
-static int rast_scan_fill(struct r_fill_context *ctx, struct poly_vert *verts, 
int num_verts, float intensity)
-{
-       int x_curr;                 /* current pixel position in X */
-       int y_curr;                 /* current scan line being drawn */
-       int yp;                     /* y-pixel's position in frame buffer */
-       int swixd = 0;              /* whether or not edges switched position 
in X */
-       float *cpxl;                /* pixel pointers... */
-       float *mpxl;
-       float *spxl;
-       struct e_status *e_curr;    /* edge pointers... */
-       struct e_status *e_temp;
-       struct e_status *edgbuf;
-       struct e_status **edgec;
+static int rast_scan_fill(struct r_fill_context *ctx, struct poly_vert *verts, 
int num_verts, float intensity) {
+    int x_curr;                 /* current pixel position in X */
+    int y_curr;                 /* current scan line being drawn */
+    int yp;                     /* y-pixel's position in frame buffer */
+    int swixd = 0;              /* whether or not edges switched position in X 
*/
+    float *cpxl;                /* pixel pointers... */
+    float *mpxl;
+    float *spxl;
+    struct e_status *e_curr;    /* edge pointers... */
+    struct e_status *e_temp;
+    struct e_status *edgbuf;
+    struct e_status **edgec;
 
 
-       /*
-        * If the number of verts specified to render as a polygon is less than 
3,
-        * return immediately. Obviously we cant render a poly with sides < 3. 
The
-        * return for this we set to 1, simply so it can be distinguished from 
the
-        * next place we could return.
-        * which is a failure to allocate memory.
-        */
-       if (num_verts < 3) {
-               return(1);
-       }
+    /*

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