[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.
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)
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
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)
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
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.
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.
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.
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
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.
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
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 =