# HG changeset patch # User nenolod # Date 1162371276 28800 # Node ID 3d98be3d74c2303aa6377f6f8e503ae2320ca961 # Parent 4494b6141b656ffe6862ee5a9a87720648921ef1 [svn] - mosaic effect (in progress, custom size will be in the next commit) - new preset: retroscope which demonstrates it ;) diff -r 4494b6141b65 -r 3d98be3d74c2 ChangeLog --- a/ChangeLog Tue Oct 31 23:43:46 2006 -0800 +++ b/ChangeLog Wed Nov 01 00:54:36 2006 -0800 @@ -1,3 +1,14 @@ +2006-11-01 07:43:46 +0000 William Pitcock + revision [346] + - branchscope preset... a very advanced example of branching, multiple + branches and well, if you didn't know better, you'd probably call it a + demo. ;) + + trunk/src/paranormal/presets/Makefile | 3 + trunk/src/paranormal/presets/nenolod_-_branchscope.pnv | 98 +++++++++++++++++ + 2 files changed, 100 insertions(+), 1 deletion(-) + + 2006-11-01 07:24:22 +0000 William Pitcock revision [344] - fix typoes diff -r 4494b6141b65 -r 3d98be3d74c2 src/paranormal/builtins.c --- a/src/paranormal/builtins.c Tue Oct 31 23:43:46 2006 -0800 +++ b/src/paranormal/builtins.c Wed Nov 01 00:54:36 2006 -0800 @@ -25,6 +25,7 @@ /* **************** general **************** */ DECLARE_ACTUATOR (general_fade); DECLARE_ACTUATOR (general_blur); +DECLARE_ACTUATOR (general_mosaic); /* **************** wave **************** */ DECLARE_ACTUATOR (wave_horizontal); @@ -56,6 +57,7 @@ /* **************** general **************** */ &builtin_general_fade, &builtin_general_blur, + &builtin_general_mosaic, /* **************** wave **************** */ &builtin_wave_horizontal, &builtin_wave_vertical, diff -r 4494b6141b65 -r 3d98be3d74c2 src/paranormal/general.c --- a/src/paranormal/general.c Tue Oct 31 23:43:46 2006 -0800 +++ b/src/paranormal/general.c Wed Nov 01 00:54:36 2006 -0800 @@ -94,3 +94,48 @@ 0, NULL, NULL, NULL, general_blur_exec }; + +/* **************** general_mosaic **************** */ +/* FIXME: add a variable radius */ +/* FIXME: SPEEEED */ +static void +general_mosaic_exec (const struct pn_actuator_option *opts, + gpointer data) +{ + int i,j; + register guchar *srcptr = pn_image_data->surface[0]; + register guchar *destptr = pn_image_data->surface[1]; + register int sum; + + for (j=0; jheight; j += 6) + for (i=0; iwidth; i += 6) + { + int ii = 0, jj = 0; + guchar bval = 0; + + /* find the brightest colour */ + for (jj = 0; jj < 6 && (j + jj < pn_image_data->height); jj++) + for (ii = 0; ii < 6 && (i + ii < pn_image_data->width); ii++) + { + guchar val = srcptr[PN_IMG_INDEX(i + ii, j + jj)]; + + if (val > bval) + bval = val; + } + + for (jj = 0; jj < 6 && (j + jj < pn_image_data->height); jj++) + for (ii = 0; ii < 6 && (i + ii < pn_image_data->width); ii++) + { + destptr[PN_IMG_INDEX(i + ii, j + jj)] = bval; + } + } + + pn_swap_surfaces (); +} + +struct pn_actuator_desc builtin_general_mosaic = +{ + "general_mosaic", "Mosaic", "A simple 6 pixel radius Mosaic", + 0, NULL, + NULL, NULL, general_mosaic_exec +}; diff -r 4494b6141b65 -r 3d98be3d74c2 src/paranormal/presets/Makefile --- a/src/paranormal/presets/Makefile Tue Oct 31 23:43:46 2006 -0800 +++ b/src/paranormal/presets/Makefile Wed Nov 01 00:54:36 2006 -0800 @@ -11,6 +11,7 @@ nenolod_-_psuedo_starfield.pnv:$(presetsdir) \ nenolod_-_quakingscope.pnv:$(presetsdir) \ nenolod_-_beatscope.pnv:$(presetsdir) \ - nenolod_-_branchscope.pnv:$(presetsdir) + nenolod_-_branchscope.pnv:$(presetsdir) \ + nenolod_-_retroscope.pnv:$(presetsdir) include ../../../mk/objective.mk diff -r 4494b6141b65 -r 3d98be3d74c2 src/paranormal/presets/nenolod_-_retroscope.pnv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/paranormal/presets/nenolod_-_retroscope.pnv Wed Nov 01 00:54:36 2006 -0800 @@ -0,0 +1,23 @@ + + + + + + + 0 + 255 + 119, 239, 163 + + + + 255 + + + -1 + + + + + + + \ No newline at end of file