[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54106] branches/ge_harmony/source/blender /blenloader/intern/readfile.c: Fixing up a do_version broken in the merge.

2013-01-25 Thread Daniel Stokes
Revision: 54106
  
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54106
Author:   kupoman
Date: 2013-01-26 06:57:21 + (Sat, 26 Jan 2013)
Log Message:
---
Fixing up a do_version broken in the merge. With out it the render target was 
set to the GL_R8 texture format (causing only red to render).

Modified Paths:
--
branches/ge_harmony/source/blender/blenloader/intern/readfile.c

Modified: branches/ge_harmony/source/blender/blenloader/intern/readfile.c
===
--- branches/ge_harmony/source/blender/blenloader/intern/readfile.c 
2013-01-26 05:34:06 UTC (rev 54105)
+++ branches/ge_harmony/source/blender/blenloader/intern/readfile.c 
2013-01-26 06:57:21 UTC (rev 54106)
@@ -8707,14 +8707,6 @@
 
if (scene->r.bake_samples == 0)
scene->r.bake_samples = 256;
-
-   /* If the prepass resolution has not been set,
-   then the render format needs to be set as well */
-   if (scene->gm.r.prepassresolution == 0.0) {
-   scene->gm.r.prepassresolution = 100.0;
-   scene->gm.r.rendercomponents[0] = 
SCE_GAMERENDER_RGB;
-   scene->gm.r.renderformats[0] = SCE_GAMERENDER_8;
-   }
}
 
for (image = main->image.first; image; image = image->id.next) {
@@ -8782,7 +8774,19 @@
}
}
}
-
+   
+   {
+   Scene *scene;
+   for (scene = main->scene.first; scene; scene = scene->id.next) {
+   /* If the prepass resolution has not been set,
+   then the render format needs to be set as well */
+   if (scene->gm.r.prepassresolution == 0.0) {
+   scene->gm.r.prepassresolution = 100.0;
+   scene->gm.r.rendercomponents[0] = 
SCE_GAMERENDER_RGB;
+   scene->gm.r.renderformats[0] = SCE_GAMERENDER_8;
+   }
+   }
+   }
// if (main->versionfile < 265 || (main->versionfile == 265 && 
main->subversionfile < 7)) {
 
/* WATCH IT!!!: pointers from libdata have not been converted yet here! 
*/

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54105] trunk/blender/source/blender/ editors/object/object_ops.c: Porting over hotkeys for adding rigidbody objects (from original branch)

2013-01-25 Thread Joshua Leung
Revision: 54105
  
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54105
Author:   aligorith
Date: 2013-01-26 05:34:06 + (Sat, 26 Jan 2013)
Log Message:
---
Porting over hotkeys for adding rigidbody objects (from original branch)

* Ctrl-R  = Add Active
* Ctrl-Shift-R = Add Passive
* Ctrl-Alt-R= Remove

Modified Paths:
--
trunk/blender/source/blender/editors/object/object_ops.c

Modified: trunk/blender/source/blender/editors/object/object_ops.c
===
--- trunk/blender/source/blender/editors/object/object_ops.c2013-01-26 
05:28:58 UTC (rev 54104)
+++ trunk/blender/source/blender/editors/object/object_ops.c2013-01-26 
05:34:06 UTC (rev 54105)
@@ -394,6 +394,12 @@
WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_all", GKEY, 
KM_PRESS, KM_SHIFT | KM_CTRL | KM_ALT, 0);
WM_keymap_verify_item(keymap, "GROUP_OT_objects_add_active", GKEY, 
KM_PRESS, KM_SHIFT | KM_CTRL, 0);
WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_active", GKEY, 
KM_PRESS, KM_SHIFT | KM_ALT, 0);
+   
+   kmi = WM_keymap_add_item(keymap, "RIGIDBODY_OT_objects_add", RKEY, 
KM_PRESS, KM_CTRL, 0);
+   RNA_enum_set(kmi->ptr, "type", 0); /* active */
+   kmi = WM_keymap_add_item(keymap, "RIGIDBODY_OT_objects_add", RKEY, 
KM_PRESS, KM_CTRL | KM_SHIFT, 0);
+   RNA_enum_set(kmi->ptr, "type", 1); /* passive */
+   kmi = WM_keymap_add_item(keymap, "RIGIDBODY_OT_objects_remove", RKEY, 
KM_PRESS, KM_CTRL | KM_ALT, 0);
 
WM_keymap_add_menu(keymap, "VIEW3D_MT_object_specials", WKEY, KM_PRESS, 
0, 0);
 

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54104] trunk/blender/source/blender/ blenkernel/intern/anim.c: Motion Path calculations for objects now takes rigidbodies sim effects into

2013-01-25 Thread Joshua Leung
Revision: 54104
  
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54104
Author:   aligorith
Date: 2013-01-26 05:28:58 + (Sat, 26 Jan 2013)
Log Message:
---
Motion Path calculations for objects now takes rigidbodies sim effects into
account

Modified Paths:
--
trunk/blender/source/blender/blenkernel/intern/anim.c

Modified: trunk/blender/source/blender/blenkernel/intern/anim.c
===
--- trunk/blender/source/blender/blenkernel/intern/anim.c   2013-01-26 
03:30:21 UTC (rev 54103)
+++ trunk/blender/source/blender/blenkernel/intern/anim.c   2013-01-26 
05:28:58 UTC (rev 54104)
@@ -69,6 +69,7 @@
 #include "BKE_depsgraph.h"
 #include "BKE_anim.h"
 #include "BKE_report.h"
+#include "BKE_rigidbody.h"
 
 
 // XXX bad level call...
@@ -327,6 +328,7 @@
 {
 #if 1 // 'production' optimizations always on
Base *base, *last = NULL;
+   float ctime = BKE_scene_frame_get(scene);

/* only stuff that moves or needs display still */
DAG_scene_update_flags(G.main, scene, scene->lay, TRUE);
@@ -340,6 +342,14 @@
last = base;
}

+   /* run rigidbody sim 
+* NOTE: keep in sync with BKE_scene_update_for_newframe() in scene.c
+*/
+   // XXX: this position may still change, objects not being updated 
correctly before simulation is run
+   // NOTE: current position is so that rigidbody sim affects other objects
+   if (BKE_scene_check_rigidbody_active(scene))
+   BKE_rigidbody_do_simulation(scene, ctime);
+   
/* perform updates for tagged objects */
/* XXX: this will break if rigs depend on scene or other data that
 * is animated but not attached to/updatable from objects */

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54103] trunk/blender/source/blender/ editors: real fix for Logic Bricks UI smart controller (#33746)

2013-01-25 Thread Dalai Felinto
Revision: 54103
  
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54103
Author:   dfelinto
Date: 2013-01-26 03:30:21 + (Sat, 26 Jan 2013)
Log Message:
---
real fix for Logic Bricks UI smart controller (#33746)
previous commit (54102) actually reintroduces an old bug where Blender 
sigfaults when
the sensor and controllers are not from the active object.

The real fix for report #33746 is to clear the "object" property after the 
operator ran.
I'm not sure why when I call the operator from command line the property is 
cleared, but not
when I called it from C. Either way all should be working now.

Modified Paths:
--
trunk/blender/source/blender/editors/interface/interface_handlers.c
trunk/blender/source/blender/editors/space_logic/logic_ops.c

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===
--- trunk/blender/source/blender/editors/interface/interface_handlers.c 
2013-01-26 02:46:07 UTC (rev 54102)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c 
2013-01-26 03:30:21 UTC (rev 54103)
@@ -880,6 +880,7 @@
RNA_pointer_create((ID *)ob, &RNA_Object, ob, &object_ptr);

WM_operator_properties_create(&props_ptr, "LOGIC_OT_controller_add");
+   RNA_string_set(&props_ptr, "object", ob->id.name + 2);
 
/* (3) add a new controller */
if (WM_operator_name_call(C, "LOGIC_OT_controller_add", 
WM_OP_EXEC_DEFAULT, &props_ptr) & OPERATOR_FINISHED) {

Modified: trunk/blender/source/blender/editors/space_logic/logic_ops.c
===
--- trunk/blender/source/blender/editors/space_logic/logic_ops.c
2013-01-26 02:46:07 UTC (rev 54102)
+++ trunk/blender/source/blender/editors/space_logic/logic_ops.c
2013-01-26 03:30:21 UTC (rev 54103)
@@ -423,6 +423,10 @@
ob->scaflag |= OB_SHOWCONT;

WM_event_add_notifier(C, NC_LOGIC, NULL);
+
+   /* prevent the operator to get stuck with the "object" of the previous 
call -
+* it only happens when it's called from the "smart controller", see 
bug #54102 */
+   RNA_string_set(op->ptr, "object", "");  

return OPERATOR_FINISHED;
 }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54102] trunk/blender/source/blender/ editors/interface/interface_handlers.c: bugfix for 33746 Unable to add Controller to objects correctly

2013-01-25 Thread Dalai Felinto
Revision: 54102
  
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54102
Author:   dfelinto
Date: 2013-01-26 02:46:07 + (Sat, 26 Jan 2013)
Log Message:
---
bugfix for 33746 Unable to add Controller to objects correctly
(live from the global game jam Vancouver ;)

Modified Paths:
--
trunk/blender/source/blender/editors/interface/interface_handlers.c

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===
--- trunk/blender/source/blender/editors/interface/interface_handlers.c 
2013-01-25 21:21:38 UTC (rev 54101)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c 
2013-01-26 02:46:07 UTC (rev 54102)
@@ -880,7 +880,6 @@
RNA_pointer_create((ID *)ob, &RNA_Object, ob, &object_ptr);

WM_operator_properties_create(&props_ptr, "LOGIC_OT_controller_add");
-   RNA_string_set(&props_ptr, "object", ob->id.name + 2);
 
/* (3) add a new controller */
if (WM_operator_name_call(C, "LOGIC_OT_controller_add", 
WM_OP_EXEC_DEFAULT, &props_ptr) & OPERATOR_FINISHED) {

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54101] trunk/blender/source/blender: Fix [#33997] Units Scale in Metric mode displays wrong face area.

2013-01-25 Thread Bastien Montagne
Revision: 54101
  
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54101
Author:   mont29
Date: 2013-01-25 21:21:38 + (Fri, 25 Jan 2013)
Log Message:
---
Fix [#33997] Units Scale in Metric mode displays wrong face area.

Also now display nice "area" units (maybe using "length" units was a perf 
matter, but anyway, you can't have more than a few tens of values displayed at 
a time, after that they become unreadable). Easy to undo anyway if we really 
want to keep ugly "10m" as area display!

Modified Paths:
--
trunk/blender/source/blender/editors/space_view3d/drawobject.c
trunk/blender/source/blender/python/intern/bpy_app_translations.c

Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
===
--- trunk/blender/source/blender/editors/space_view3d/drawobject.c  
2013-01-25 15:44:22 UTC (rev 54100)
+++ trunk/blender/source/blender/editors/space_view3d/drawobject.c  
2013-01-25 21:21:38 UTC (rev 54101)
@@ -2653,16 +2653,21 @@
BMFace *f;
int n;
 
-#define DRAW_EM_MEASURE_STATS_FACEAREA()  \
-   if (BM_elem_flag_test(f, BM_ELEM_SELECT)) { 
  \
-   mul_v3_fl(vmid, 1.0f / (float)n);   
  \
-   if (unit->system)   
  \
-   bUnit_AsString(numstr, sizeof(numstr),  
  \
-  (double)(area * unit->scale_length), 
  \
-  3, unit->system, B_UNIT_LENGTH, 
do_split, FALSE);  \
-   else
  \
-   BLI_snprintf(numstr, sizeof(numstr), conv_float, area); 
  \
-   view3d_cached_text_draw_add(vmid, numstr, 0, txt_flag, col);
  \
+#define DRAW_EM_MEASURE_STATS_FACEAREA()   
  \
+   if (BM_elem_flag_test(f, BM_ELEM_SELECT)) { 
 \
+   mul_v3_fl(vmid, 1.0f / (float)n);   
 \
+   if (unit->system) { 
 \
+   bUnit_AsString(numstr, sizeof(numstr),  
 \
+  (double)(area * unit->scale_length * 
unit->scale_length), \
+  3, unit->system, B_UNIT_AREA, do_split, 
FALSE);   \
+   view3d_cached_text_draw_add(vmid, numstr, 0,
 \
+   /* Metric system uses 
unicode "squared" sign! */ \
+   txt_flag ^ 
V3D_CACHE_TEXT_ASCII, col);   \
+   }   
 \
+   else {  
 \
+   BLI_snprintf(numstr, sizeof(numstr), conv_float, area); 
 \
+   view3d_cached_text_draw_add(vmid, numstr, 0, txt_flag, 
col); \
+   }   
 \
} (void)0
 
UI_GetThemeColor3ubv(TH_DRAWEXTRA_FACEAREA, col);

Modified: trunk/blender/source/blender/python/intern/bpy_app_translations.c
===
--- trunk/blender/source/blender/python/intern/bpy_app_translations.c   
2013-01-25 15:44:22 UTC (rev 54100)
+++ trunk/blender/source/blender/python/intern/bpy_app_translations.c   
2013-01-25 21:21:38 UTC (rev 54101)
@@ -708,7 +708,7 @@
/* newfunc tp_new; */
(newfunc)app_translations_new,
/*  Low-level free-memory routine */
-   app_translations_free,   /* freefunc tp_free;  */
+   app_translations_free,  /* freefunc tp_free;  */
/* For PyObject_IS_GC */
NULL,   /* inquiry tp_is_gc;  */
NULL,   /* PyObject *tp_bases; */

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54100] trunk/blender/source/blender/ makesrna/intern/rna_userdef.c: Small tweak: Allow DPI for UI to go up 144, exactly double size of 72.

2013-01-25 Thread Ton Roosendaal
Revision: 54100
  
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54100
Author:   ton
Date: 2013-01-25 15:44:22 + (Fri, 25 Jan 2013)
Log Message:
---
Small tweak: Allow DPI for UI to go up 144, exactly double size of 72.
That makes all default icons draw in full unfiltered 32x32 pixel glory!

Modified Paths:
--
trunk/blender/source/blender/makesrna/intern/rna_userdef.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_userdef.c
===
--- trunk/blender/source/blender/makesrna/intern/rna_userdef.c  2013-01-25 
13:51:49 UTC (rev 54099)
+++ trunk/blender/source/blender/makesrna/intern/rna_userdef.c  2013-01-25 
15:44:22 UTC (rev 54100)
@@ -3320,7 +3320,7 @@
 
prop = RNA_def_property(srna, "dpi", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "dpi");
-   RNA_def_property_range(prop, 48, 128);
+   RNA_def_property_range(prop, 48, 144);
RNA_def_property_ui_text(prop, "DPI", "Font size and resolution for 
display");
RNA_def_property_update(prop, 0, "rna_userdef_dpi_update");


___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54099] trunk/blender/source/blender/ blenlib/BLI_math_base.h: Fix warnings about undefined _POSIX_C_SOURCE with gcc 4.2 on Mac.

2013-01-25 Thread Brecht Van Lommel
Revision: 54099
  
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54099
Author:   blendix
Date: 2013-01-25 13:51:49 + (Fri, 25 Jan 2013)
Log Message:
---
Fix warnings about undefined _POSIX_C_SOURCE with gcc 4.2 on Mac.

Modified Paths:
--
trunk/blender/source/blender/blenlib/BLI_math_base.h

Modified: trunk/blender/source/blender/blenlib/BLI_math_base.h
===
--- trunk/blender/source/blender/blenlib/BLI_math_base.h2013-01-25 
10:17:06 UTC (rev 54098)
+++ trunk/blender/source/blender/blenlib/BLI_math_base.h2013-01-25 
13:51:49 UTC (rev 54099)
@@ -81,7 +81,7 @@
 #endif
 
 /* do not redefine functions from C99 or POSIX.1-2001 */
-#if !(defined(_ISOC99_SOURCE) || _POSIX_C_SOURCE >= 200112L)
+#if !(defined(_ISOC99_SOURCE) || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE 
>= 200112L))
 
 #ifndef sqrtf
 #define sqrtf(a) ((float)sqrt(a))

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54098] trunk/blender/source/blender/ windowmanager/intern/wm_subwindow.c: Bugfix #33989

2013-01-25 Thread Ton Roosendaal
Revision: 54098
  
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54098
Author:   ton
Date: 2013-01-25 10:17:06 + (Fri, 25 Jan 2013)
Log Message:
---
Bugfix #33989

Transparent region drawing and blend broke by commit 53919 5 days ago.
This commit reverts the change.

The claim in previous commit "edited code for readability" is quite
disputable :) The error is hard to notice even.

I also like to emphasize that people should check with owners for code
before committing changes! Cleaning code is first a job for maintainers.

Modified Paths:
--
trunk/blender/source/blender/windowmanager/intern/wm_subwindow.c

Modified: trunk/blender/source/blender/windowmanager/intern/wm_subwindow.c
===
--- trunk/blender/source/blender/windowmanager/intern/wm_subwindow.c
2013-01-25 09:57:17 UTC (rev 54097)
+++ trunk/blender/source/blender/windowmanager/intern/wm_subwindow.c
2013-01-25 10:17:06 UTC (rev 54098)
@@ -241,8 +241,7 @@
 
 void wmSubWindowScissorSet(wmWindow *win, int swinid, rcti *srct)
 {
-   int x, y, width, height;
-
+   int width, height;
_curswin = swin_from_swinid(win, swinid);

if (_curswin == NULL) {
@@ -251,33 +250,26 @@
}

win->curswin = _curswin;
-
_curwindow = win;

-   x  = _curswin->winrct.xmin;
-   y  = _curswin->winrct.ymin;
width  = BLI_rcti_size_x(&_curswin->winrct) + 1;
height = BLI_rcti_size_y(&_curswin->winrct) + 1;
-
-   glViewport(x, y, width, height);
-
+   glViewport(_curswin->winrct.xmin, _curswin->winrct.ymin, width, height);
+   
if (srct) {
-   x  = srct->xmin;
-   y  = srct->ymin;
-   width  = BLI_rcti_size_x(srct) + 1;
-   height = BLI_rcti_size_y(srct) + 1;
+   int width  = BLI_rcti_size_x(srct) + 1; /* only here */
+   int height = BLI_rcti_size_y(srct) + 1;
+   glScissor(srct->xmin, srct->ymin, width, height);
}
-
-glScissor(x, y, width, height);
+   else
+   glScissor(_curswin->winrct.xmin, _curswin->winrct.ymin, width, 
height);

wmOrtho2(-GLA_PIXEL_OFS, (float)width - GLA_PIXEL_OFS, -GLA_PIXEL_OFS, 
(float)height - GLA_PIXEL_OFS);
-
-   glLoadIdentity(); /* reset MODELVIEW */
-
-   glFlush(); /* XXX: jwilkins - is this really needed here? */
+   glLoadIdentity();
+   
+   glFlush();
 }
 
-
 /* enable the WM versions of opengl calls */
 void wmSubWindowSet(wmWindow *win, int swinid)
 {

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54097] trunk/blender/source/blender/ makesrna/intern/rna_nodetree.c: Increasing dilate erode number of steps.

2013-01-25 Thread Monique Dewanchand
Revision: 54097
  
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54097
Author:   mdewanchand
Date: 2013-01-25 09:57:17 + (Fri, 25 Jan 2013)
Log Message:
---
Increasing dilate erode number of steps.

Modified Paths:
--
trunk/blender/source/blender/makesrna/intern/rna_nodetree.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
===
--- trunk/blender/source/blender/makesrna/intern/rna_nodetree.c 2013-01-25 
09:47:28 UTC (rev 54096)
+++ trunk/blender/source/blender/makesrna/intern/rna_nodetree.c 2013-01-25 
09:57:17 UTC (rev 54097)
@@ -2537,7 +2537,8 @@

prop = RNA_def_property(srna, "distance", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "custom2");
-   RNA_def_property_range(prop, -100, 100);
+   RNA_def_property_range(prop, -5000, 5000);
+   RNA_def_property_ui_range(prop, -100, 100, 0, 0);
RNA_def_property_ui_text(prop, "Distance", "Distance to grow/shrink 
(number of iterations)");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54096] trunk/blender/source/blender/ compositor/operations/COM_DilateErodeOperation.cpp: committed patch [#33972 ] dilate/erode optimization

2013-01-25 Thread Monique Dewanchand
Revision: 54096
  
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54096
Author:   mdewanchand
Date: 2013-01-25 09:47:28 + (Fri, 25 Jan 2013)
Log Message:
---
committed patch [#33972] dilate/erode optimization

this patch optimizes the dilate/erode step method (hopefully without any 
functional change),
making its speed not depend on the distance anymore.

Couldn't detect funtional changes so committing. Haven't tested for speed gain.

 * credits to erwin94 David M

Modified Paths:
--

trunk/blender/source/blender/compositor/operations/COM_DilateErodeOperation.cpp

Modified: 
trunk/blender/source/blender/compositor/operations/COM_DilateErodeOperation.cpp
===
--- 
trunk/blender/source/blender/compositor/operations/COM_DilateErodeOperation.cpp 
2013-01-25 07:31:29 UTC (rev 54095)
+++ 
trunk/blender/source/blender/compositor/operations/COM_DilateErodeOperation.cpp 
2013-01-25 09:47:28 UTC (rev 54096)
@@ -337,38 +337,73 @@
MemoryBuffer *buffer = (MemoryBuffer 
*)this->m_inputProgram->initializeTileData(NULL);
float *rectf = buffer->convertToValueBuffer();
int x, y, i;
-   float *p;
int bwidth = buffer->getWidth();
int bheight = buffer->getHeight();
-   for (i = 0; i < this->m_iterations; i++) {
-   for (y = 0; y < bheight; y++) {
-   for (x = 0; x < bwidth - 1; x++) {
-   p = rectf + (bwidth * y + x);
-   *p = max(*p, *(p + 1));
+
+   /*
+ The following is based on the van Herk/Gil-Werman algorithm 
for morphology operations.
+*/
+   int half_window = this->m_iterations;
+   int window = half_window * 2 + 1;
+   float *temp = (float *)MEM_mallocN((2*window - 1) * 
sizeof(float), "dilate erode temp");
+   float *buf = (float *)MEM_mallocN((max(bwidth, bheight) + 
5*half_window) * sizeof(float), "dilate erode buf");
+
+   for (y = 0; y < bheight; y++) {
+   for (x = 0; x < window - 1; x++) {
+   buf[x] = -MAXFLOAT;
+   }
+   for (x = 0; x < bwidth; x++) {
+   buf[x + window - 1] = rectf[bwidth * y + x];
+   }
+   for (x = bwidth + window - 1; x < bwidth + 
5*half_window; x++) {
+   buf[x] = -MAXFLOAT;
+   }
+
+   for(i = 0; i < (bwidth + 3*half_window) / window; i++) {
+   int start = (i + 1) * window - 1;
+
+   temp[window - 1] = buf[start];
+   for (x = 1; x < window; x++) {
+   temp[window - 1 - x] = max(temp[window 
- x], buf[start - x]);
+   temp[window - 1 + x] = max(temp[window 
+ x - 2], buf[start + x]);
}
+
+   start = half_window + (i-1) * window + 1;
+   for (x = -min(0, start); x < window - max(0, 
start+window - bwidth); x++) {
+   rectf[bwidth * y + (start + x)] = 
max(temp[x], temp[x + window - 1]);
+   }
}
-   
+   }
+
+   for (x = 0; x < bwidth; x++) {
+   for (y = 0; y < window - 1; y++) {
+   buf[y] = -MAXFLOAT;
+   }
for (y = 0; y < bheight; y++) {
-   for (x = bwidth - 1; x >= 1; x--) {
-   p = rectf + (bwidth * y + x);
-   *p = max(*p, *(p - 1));
-   }
+   buf[y + window - 1] = rectf[bwidth * y + x];
}
-   
-   for (x = 0; x < bwidth; x++) {
-   for (y = 0; y < bheight - 1; y++) {
-   p = rectf + (bwidth * y + x);
-   *p = max(*p, *(p + bwidth));
-   }
+   for (y = bheight + window - 1; y < bheight + 
5*half_window; y++) {
+   buf[y] = -MAXFLOAT;
}
-   
-   for (x = 0; x < bwidth; x++) {
-   for (y = bheight - 1; y >= 1; y--) {
-   p = rectf + (bwidth * y + x);
-   *p = max(*p, *(p - bwidth));
+
+   for(i =