diff src/paranormal/general.c @ 177:6880934d11bf trunk

[svn] - add "Clear Surface" instruction.
author nenolod
date Wed, 01 Nov 2006 01:11:20 -0800
parents c93118f6ef27
children b44ab11a64c2
line wrap: on
line diff
--- a/src/paranormal/general.c	Wed Nov 01 01:03:30 2006 -0800
+++ b/src/paranormal/general.c	Wed Nov 01 01:11:20 2006 -0800
@@ -21,8 +21,7 @@
 general_fade_exec (const struct pn_actuator_option *opts,
 	   gpointer data)
 {
-  int amt = opts[0].val.ival > 255 || opts[0].val.ival < 0 ?
-    3 : opts[0].val.ival;
+  int amt = opts[0].val.ival > 255 || opts[0].val.ival < 0 ? 3 : opts[0].val.ival;
   int i, j;
 
   for (j=0; j<pn_image_data->height; j++)
@@ -113,7 +112,7 @@
   register guchar *srcptr = pn_image_data->surface[0];
   register guchar *destptr = pn_image_data->surface[1];
   register int sum;
-  int radius = opts[0].val.ival;
+  int radius = opts[0].val.ival > 255 || opts[0].val.ival < 0 ? 6 : opts[0].val.ival;
 
   for (j=0; j<pn_image_data->height; j += radius)
     for (i=0; i<pn_image_data->width; i += radius)
@@ -147,3 +146,20 @@
   0, general_mosaic_opts,
   NULL, NULL, general_mosaic_exec
 };
+
+/* **************** general_clear **************** */
+static void
+general_clear_exec (const struct pn_actuator_option *opts,
+	   gpointer data)
+{
+   memset(pn_image_data->surface[0], '\0',
+	  (pn_image_data->height * pn_image_data->width));
+}
+
+struct pn_actuator_desc builtin_general_clear =
+{
+  "general_clear", "Clear Surface", "Clears the surface.",
+  0, NULL,
+  NULL, NULL, general_clear_exec
+};
+