[gimp-gap/gap-2-8] fixed iterators and endless loop in video index creation



commit eef5deb1a9c6542fb698bd359f2a2e1b35de6f82
Author: Wolfgang Hofer <wolfgangh svn gnome org>
Date:   Thu Feb 27 18:32:59 2014 +0100

    fixed iterators and endless loop in video index creation

 ChangeLog                                          |   58 +++++++++
 gap/gap_filter_iterators.c                         |   37 ++++++
 gap/gap_fmac_main.c                                |  130 +++++++++++++++++---
 gap/gap_name2layer_main.c                          |   28 ++++-
 gap/gap_player_dialog.c                            |    8 ++
 gap/gap_video_index_creator.c                      |   14 ++-
 gap/iter_ALT/gen/plug_in_blinds_iter_ALT.inc       |   13 ++-
 gap/iter_ALT/gen/plug_in_checkerboard_iter_ALT.inc |    8 +-
 gap/iter_ALT/gen/plug_in_destripe_iter_ALT.inc     |    1 +
 gap/iter_ALT/gen/plug_in_engrave_iter_ALT.inc      |    1 +
 .../gen/plug_in_fractal_trace_iter_ALT.inc         |   25 ++--
 gap/iter_ALT/gen/plug_in_mblur_iter_ALT.inc        |    2 +
 gap/iter_ALT/gen/plug_in_mosaic_iter_ALT.inc       |   37 ++++--
 gap/iter_ALT/gen/plug_in_newsprint_iter_ALT.inc    |   32 +++---
 gap/iter_ALT/gen/plug_in_ripple_iter_ALT.inc       |   20 ++--
 gap/iter_ALT/gen/plug_in_shift_iter_ALT.inc        |    7 +-
 gap/iter_ALT/gen/plug_in_video_iter_ALT.inc        |   17 ++-
 gap/iter_ALT/gen/plug_in_waves_iter_ALT.inc        |    1 +
 gap/iter_ALT/mod/plug_in_applylens_iter_ALT.inc    |   16 ++-
 gap/iter_ALT/mod/plug_in_bump_map_iter_ALT.inc     |    2 +
 .../mod/plug_in_colors_channel_mixer_iter_ALT.inc  |    3 +
 gap/iter_ALT/mod/plug_in_dog_iter_ALT.inc          |    2 +
 gap/iter_ALT/mod/plug_in_map_object_iter_ALT.inc   |    2 +
 gap/iter_ALT/mod/plug_in_polar_coords_iter_ALT.inc |    3 +
 gap/iter_ALT/mod/plug_in_sinus_iter_ALT.inc        |    1 +
 gap/iter_ALT/mod/plug_in_solid_noise_iter_ALT.inc  |    3 +
 gap/iter_ALT/mod/plug_in_sparkle_iter_ALT.inc      |    5 +
 libgapvidapi/gap_vid_api_ffmpeg.c                  |   21 +++-
 28 files changed, 404 insertions(+), 93 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 021cdfa..4c739a9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,61 @@
+2014-02-27 Wolfgang Hofer <hof gimp org>
+
+- fixed bug in the GAP video API that caused endless loop in
+  ffmpeg based video index creation.
+  (p_wrapper_ffmpeg_get_next_frame retcode was not returned to the caller !)
+
+- video index creator and player dialog:
+    video index creation now shows the current frame count in the progress bar.
+    This is done because the total number of frames to process is just a guess
+    and the percentage is kept at constant level if there are (much) more frames to process
+    (than assumed in the initial guess.)
+
+- Updated iterator procedures to fit last values buffer structures
+  for the plug-ins that are part of the GIMP-2.8.10 release.
+  (some of them have changed their structure and are not compatible
+  with GIMP-2.6.x releases)
+
+
+- added information column in the filtermacro dialog 
+  this column shows errors that occured when recording a filtercall.
+  The current implementation marks filters with Error 1
+  when the probe iteratorcall fails at recording time 
+  (triggered by the Add button in the filtermacro dialog)
+  
+  The probe iteratorcall typically fails when the last values buffer
+  (where the filter stores its parmaters) does not match the
+  corresponding iterator implementation.
+
+
+  * gap/gap_filter_iterators.c
+  * gap/gap_fmac_main.c
+  * gap/gap_name2layer_main.c
+  * gap/gap_player_dialog.c
+  * gap/gap_video_index_creator.c
+  * gap/iter_ALT/gen/plug_in_blinds_iter_ALT.inc
+  * gap/iter_ALT/gen/plug_in_checkerboard_iter_ALT.inc
+  * gap/iter_ALT/gen/plug_in_destripe_iter_ALT.inc
+  * gap/iter_ALT/gen/plug_in_engrave_iter_ALT.inc
+  * gap/iter_ALT/gen/plug_in_fractal_trace_iter_ALT.inc
+  * gap/iter_ALT/gen/plug_in_mblur_iter_ALT.inc
+  * gap/iter_ALT/gen/plug_in_mosaic_iter_ALT.inc
+  * gap/iter_ALT/gen/plug_in_newsprint_iter_ALT.inc
+  * gap/iter_ALT/gen/plug_in_ripple_iter_ALT.inc
+  * gap/iter_ALT/gen/plug_in_shift_iter_ALT.inc
+  * gap/iter_ALT/gen/plug_in_video_iter_ALT.inc
+  * gap/iter_ALT/gen/plug_in_waves_iter_ALT.inc
+  * gap/iter_ALT/mod/plug_in_applylens_iter_ALT.inc
+  * gap/iter_ALT/mod/plug_in_bump_map_iter_ALT.inc
+  * gap/iter_ALT/mod/plug_in_colors_channel_mixer_iter_ALT.inc
+  * gap/iter_ALT/mod/plug_in_dog_iter_ALT.inc
+  * gap/iter_ALT/mod/plug_in_map_object_iter_ALT.inc
+  * gap/iter_ALT/mod/plug_in_polar_coords_iter_ALT.inc
+  * gap/iter_ALT/mod/plug_in_sinus_iter_ALT.inc
+  * gap/iter_ALT/mod/plug_in_solid_noise_iter_ALT.inc
+  * gap/iter_ALT/mod/plug_in_sparkle_iter_ALT.inc
+  * libgapvidapi/gap_vid_api_ffmpeg.c
+
+
 2014-02-22 Wolfgang Hofer <hof gimp org>
 - extended filtermacro reference sidecar filformat (.fmref)
   .fmref files do describe persistent layer ids and 
diff --git a/gap/gap_filter_iterators.c b/gap/gap_filter_iterators.c
index 1af857e..58033b5 100644
--- a/gap/gap_filter_iterators.c
+++ b/gap/gap_filter_iterators.c
@@ -228,6 +228,22 @@ static void p_delta_int(int *val, int val_from, int val_to, gint32 total_steps,
      delta = ((double)(val_to - val_from) / (double)total_steps) * ((double)total_steps - current_step);
      *val  = val_from + delta;
 }
+static void p_delta_gboolean(gboolean *val, gboolean val_from, gboolean val_to, gint32 total_steps, gdouble 
current_step)
+{
+     double     delta;
+
+     if(total_steps < 1) return;
+
+     delta = (1.0 / (double)total_steps) * ((double)total_steps - current_step);
+     if (delta <= 0.5)
+     {
+       *val  = val_from;
+     }
+     else
+     {
+       *val  = val_to;
+     }
+}
 static void p_delta_gint(gint *val, gint val_from, gint val_to, gint32 total_steps, gdouble current_step)
 {
     double     delta;
@@ -1369,6 +1385,27 @@ gap_common_iterator(const char *c_keyname, GimpRunMode run_mode, gint32 total_st
 
 
 
+static void 
+p_delta_GimpOrientationType(GimpOrientationType *val, GimpOrientationType *val_from, GimpOrientationType 
*val_to, gint32 total_steps, gdouble current_step)
+{
+    double     delta;
+    gboolean   orientationFrom;
+    gboolean   orientationTo;
+    gboolean   orientationCurrent;
+
+    if(total_steps < 1) return;
+
+    orientationCurrent = (*val == GIMP_ORIENTATION_HORIZONTAL);
+    orientationFrom = (*val_from == GIMP_ORIENTATION_HORIZONTAL);
+    orientationTo   = (*val_to   == GIMP_ORIENTATION_HORIZONTAL);
+
+    p_delta_gboolean(&orientationCurrent, orientationFrom, orientationTo, total_steps, current_step);
+
+
+    *val = (orientationCurrent) ? GIMP_ORIENTATION_HORIZONTAL : GIMP_ORIENTATION_VERTICAL;
+
+}
+
 
 static void 
 p_delta_GimpRGB(GimpRGB *val, GimpRGB *val_from, GimpRGB *val_to, gint32 total_steps, gdouble current_step)
diff --git a/gap/gap_fmac_main.c b/gap/gap_fmac_main.c
old mode 100644
new mode 100755
index bf71099..1bbc0a2
--- a/gap/gap_fmac_main.c
+++ b/gap/gap_fmac_main.c
@@ -73,6 +73,7 @@
 #define GAP_DB_BROWSER_FMAC_HELP_ID  "gap-filtermacro-db-browser"
 
 #define FMAC_FILE_LENGTH  1500
+#define ERRCODE_KEY_STRING "(err:"
 
 /* ------------------------
  * global gap DEBUG switch
@@ -112,6 +113,8 @@ typedef struct
 
 gint         gap_fmac_dialog(GimpRunMode run_mode, gint32 image_id, gint32 drawable_id);
 
+static long  p_get_errorcode_as_long(const char *line);
+static gchar * p_get_errorcode_string(const char *line);
 static gchar * p_get_filtername(const char *line);
 static void  p_procedure_select_callback (GtkTreeSelection *sel, fmac_globalparams_t *gpp);
 static void  p_tree_fill (fmac_globalparams_t *gpp);
@@ -130,7 +133,7 @@ static void  p_setbutton_sensitivity(fmac_globalparams_t *gpp);
 
 static gboolean  p_chk_filtermacro_file(const char *filtermacro_file);
 static void      p_print_and_free_msg(char *msg, GimpRunMode run_mode);
-static gchar *   p_get_gap_filter_data_string(const char *plugin_name);
+static gchar *   p_get_gap_filter_data_string(const char *plugin_name, gint errorcode);
 static gchar *   p_get_mapped_gap_filter_data_string(const char *plugin_name, const char *filtermacro_file);
 static gint      p_fmac_add_filter_to_file(const char *filtermacro_file, const char *plugin_name);
 static gint      p_fmac_add_filter(const char *filtermacro_file, gint32 image_id);
@@ -382,12 +385,13 @@ p_print_and_free_msg(char *msg, GimpRunMode run_mode)
  *      "plug_in_name" len hexbyte1 hexbyte2 .......\n
  *   example:
  *      "plug_in_sharpen"    4  0a 00 00 00
+ *      "plug_in_sharpen"    4  0a 00 00 00 (err: -1)
  *
  * return data_string or  NULL pointer if nothing was found.
  *        the returned data_string should be g_free'd by the caller (if it was not NULL)
  */
 static gchar *
-p_get_gap_filter_data_string(const char *plugin_name)
+p_get_gap_filter_data_string(const char *plugin_name, gint errorcode)
 {
   gint plugin_data_len;
   int   l_byte;
@@ -403,7 +407,7 @@ p_get_gap_filter_data_string(const char *plugin_name)
 
    if(gap_debug)
    {
-     printf("p_get_gap_filter_data_string: plugin_name:%s:\n", plugin_name);
+     printf("p_get_gap_filter_data_string: plugin_name:%s: errorcode:%d\n", plugin_name, errorcode);
    }
 
    plugin_data_len = gimp_get_data_size (plugin_name);
@@ -428,8 +432,16 @@ p_get_gap_filter_data_string(const char *plugin_name)
           g_free(l_str);
         }
 
-        /* add terminating newline character */
-        l_str = g_strdup_printf("%s\n", l_str_tmp);
+        if (errorcode == 0)
+        {
+          /* add terminating newline character */
+          l_str = g_strdup_printf("%s\n", l_str_tmp);
+        }
+        else
+        {
+          /* add errorcode and terminating newline character */
+          l_str = g_strdup_printf("%s %s %d)\n", l_str_tmp, ERRCODE_KEY_STRING, errorcode);
+        }
         g_free(l_str_tmp);
 
         if (gap_debug)
@@ -447,6 +459,7 @@ p_get_gap_filter_data_string(const char *plugin_name)
 }  /* end p_get_gap_filter_data_string */
 
 
+
 /* -----------------------------------
  * p_get_mapped_gap_filter_data_string
  * -----------------------------------
@@ -464,7 +477,7 @@ p_get_gap_filter_data_string(const char *plugin_name)
  *
  * return data_string or  NULL pointer if nothing was found.
  *        the returned data_string should be g_free'd by the caller (if it was not NULL)
- * 
+ *
  */
 static gchar *
 p_get_mapped_gap_filter_data_string(const char *plugin_name, const char *filtermacro_file)
@@ -476,10 +489,11 @@ p_get_mapped_gap_filter_data_string(const char *plugin_name, const char *filterm
   gchar  *data_string;
   const char *l_iteratorname;
   gint l_count;
+  gint l_error;
 
 
   data_string = NULL;
- 
+
   if(plugin_name == NULL)
   {
     return (NULL);
@@ -521,7 +535,7 @@ p_get_mapped_gap_filter_data_string(const char *plugin_name, const char *filterm
     gimp_get_data(plugin_name, plugin_data_bck);
 
 
-    /* Set FROM and TO buffers. 
+    /* Set FROM and TO buffers.
      * (in recording mode we use all the same data as the backup of the original buffer)
      * those buffers are not relevant in recording mode, but are required
      * for the iterator call interface.
@@ -536,22 +550,26 @@ p_get_mapped_gap_filter_data_string(const char *plugin_name, const char *filterm
      * this triggers the mapping of drawable ids in the persistent .fmref file.
      * (but only in case the called plugin has at least one an iterable drawable_id in its last_values 
paramters,
      * otherwise the las values buffer shall not change by the iteratorcall,
-     * due to same settings for from and to values) 
+     * due to same settings for from and to values)
      */
-    gap_filter_iterator_call(l_iteratorname
+    l_error = 0;
+    if(!gap_filter_iterator_call(l_iteratorname
        , 1       /* total_steps */
        , 1.0     /* current_step */
        , plugin_name
        , plugin_data_len
-       );
+       ))
+    {
+      l_error = 1;
+    }
 
-    data_string = p_get_gap_filter_data_string(plugin_name);
+    data_string = p_get_gap_filter_data_string(plugin_name, l_error);
 
     /* restore original data from backup buffer */
     gimp_set_data(plugin_name, plugin_data_bck, plugin_data_len);
 
     g_free(plugin_data_bck);
-    
+
     /* disable the sessionwide filtermacro context */
     gap_fmct_disable_GapFmacContext();
 
@@ -775,6 +793,11 @@ gap_fmac_dialog(GimpRunMode run_mode, gint32 image_id, gint32 drawable_id)
                                                renderer,
                                                "text", 3,
                                                NULL);
+  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (gpp->tv),
+                                               -1, _("Information"),
+                                               renderer,
+                                               "text", 4,
+                                               NULL);
   gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (gpp->tv), TRUE);
 
   gtk_widget_set_size_request (gpp->tv, 320 /*WIDTH*/, 100 /*HEIGHT*/);
@@ -821,6 +844,73 @@ gap_fmac_dialog(GimpRunMode run_mode, gint32 image_id, gint32 drawable_id)
   return 0;
 } /* end gap_fmac_dialog */
 
+/* ----------------------------
+ * p_get_errorcode_as_long
+ * ----------------------------
+ * input is a typical filtermacro file line
+ *       if the line contains a filtername (starting with double quotes character)
+ *       AND also contains an errorcode string "(err: -1)
+ *       then return the errorcode as long integer
+ * return 0 in case the line has no errorcode (or errorcode 0)
+ */
+static long
+p_get_errorcode_as_long(const char *line)
+{
+  if(*line == '"')
+  {
+    gint  l_idx;
+    gint  l_start;
+
+    l_idx = 1;
+    l_start = -1;
+    while((line[l_idx] != '\0') && (line[l_idx] != '\n'))
+    {
+      if (l_start == -1)
+      {
+        if (line[l_idx] == '"')
+        {
+          /* found the closing double qute character */
+          l_start = 0;
+        }
+      }
+      else if (l_start == 0)
+      {
+        gint l_len;
+        l_len = strlen(ERRCODE_KEY_STRING);
+        if(strncmp(&line[l_idx], ERRCODE_KEY_STRING, l_len) == 0)
+        {
+          long  l_errcode;
+          l_errcode = atol(&line[l_idx + l_len]);
+          return (l_errcode);
+        }
+      }
+
+      l_idx++;
+    }
+    return(0);
+  }
+  return (0);
+
+}  /* end p_get_errorcode_as_long */
+
+/* ----------------------------
+ * p_get_errorcode_as_string
+ * ----------------------------
+ * return empty string for errorcode 0 (OK) or n case when no errorcode present
+ */
+static gchar *
+p_get_errorcode_string(const char *line)
+{
+  long  l_errcode;
+  l_errcode = p_get_errorcode_as_long(line);
+  if (l_errcode == 0)
+  {
+    return (g_strdup("\0"));
+  }
+  return (g_strdup_printf(_("Error: %d"), (int)l_errcode));
+
+}  /* end p_get_errorcode_string */
+
 
 /* ----------------------------
  * p_get_filtername
@@ -898,7 +988,13 @@ p_tree_fill (fmac_globalparams_t *gpp)
   GapValTextFileLines *txf_ptr_root;
 
 
-  gpp->store = gtk_list_store_new (4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
+  gpp->store = gtk_list_store_new (5
+                                  , G_TYPE_STRING
+                                  , G_TYPE_STRING
+                                  , G_TYPE_STRING
+                                  , G_TYPE_STRING
+                                  , G_TYPE_STRING
+                                  );
   gtk_tree_view_set_model (GTK_TREE_VIEW (gpp->tv)
                           ,GTK_TREE_MODEL (gpp->store)
                           );
@@ -930,7 +1026,9 @@ p_tree_fill (fmac_globalparams_t *gpp)
          gchar *numtxt;
          gchar *label;
          gchar *menu_path;
+         gchar *errorcode;
 
+         errorcode = p_get_errorcode_string(txf_ptr->line);
          menu_path = gap_db_get_plugin_menupath(pdb_name);
          if(menu_path == NULL)
          {
@@ -945,11 +1043,13 @@ p_tree_fill (fmac_globalparams_t *gpp)
                             ,1, label             /* visible number starting at 1 */
                             ,2, pdb_name
                             ,3, menu_path
+                            ,4, errorcode
                             ,-1);
          g_free (numtxt);
          g_free (label);
          g_free (menu_path);
          g_free (pdb_name);
+         g_free (errorcode);
          count_elem++;
        }
     }
@@ -1452,7 +1552,7 @@ p_fmac_pdb_constraint_proc_sel1(gchar *proc_name, gint32 image_id)
 {
   char *data_string;
 
-  data_string = p_get_gap_filter_data_string(proc_name);
+  data_string = p_get_gap_filter_data_string(proc_name, 0);
 
   if(data_string)
   {
diff --git a/gap/gap_name2layer_main.c b/gap/gap_name2layer_main.c
index 6030077..35c3f17 100644
--- a/gap/gap_name2layer_main.c
+++ b/gap/gap_name2layer_main.c
@@ -202,10 +202,16 @@ run (const gchar *name,          /* name of plugin */
   l_env = g_getenv("NUML_DEBUG");
   if(l_env != NULL)
   {
-    if((*l_env != 'n') && (*l_env != 'N')) gap_debug = 1;
+    if((*l_env != 'n') && (*l_env != 'N'))
+    {
+      gap_debug = 1;
+    }
   }
 
-  if(gap_debug) fprintf(stderr, "\n\nDEBUG: run %s\n", name);
+  if(gap_debug)
+  {
+    printf("\n\nDEBUG: run %s\n", name);
+  }
 
   /* initialize the return of the status */
   values[0].type = GIMP_PDB_STATUS;
@@ -302,7 +308,13 @@ p_Naml (gint32 image_id, gint32 drawable_id)
   gchar *l_imagename;
   gchar *l_text;
 
-  if(gap_debug) printf("p_Naml START\n");
+  if(gap_debug)
+  {
+    printf("p_Naml START image_id:%d drawable_id:%d\n"
+        , (int)image_id
+        , (int)drawable_id
+        );
+  }
 
   l_imagename = g_strdup(gimp_image_get_filename(image_id) );
   if(l_imagename == NULL)
@@ -311,7 +323,10 @@ p_Naml (gint32 image_id, gint32 drawable_id)
   }
   l_text = l_imagename;
 
-  if(gap_debug) printf("p_Naml (1) l_imagename:%s\n", l_imagename);
+  if(gap_debug)
+  {
+   printf("p_Naml (1) l_imagename:%s\n", l_imagename);
+  }
 
   l_drawable_id = -1;
   if(glob_namlvals.create_new_layer == 0)
@@ -412,7 +427,10 @@ p_Naml (gint32 image_id, gint32 drawable_id)
 
   gimp_image_undo_group_end(image_id);
 
-  if(gap_debug) printf("p_Naml END layer_id: %d\n", (int)l_new_layer_id);
+  if(gap_debug)
+  {
+    printf("p_Naml END layer_id: %d\n", (int)l_new_layer_id);
+  }
 
   return l_new_layer_id;
 }       /* end p_Naml */
diff --git a/gap/gap_player_dialog.c b/gap/gap_player_dialog.c
index 1eafeaf..440b3b0 100644
--- a/gap/gap_player_dialog.c
+++ b/gap/gap_player_dialog.c
@@ -2688,6 +2688,14 @@ p_vid_progress_callback(gdouble progress
   }
 
   gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(gpp->progress_bar), progress);
+  if((gpp->vindex_creation_is_running)
+  && (gpp->gvahand != NULL))
+  {
+     gchar *progressMsg;
+     progressMsg = g_strdup_printf(_("Creating Index %d"), (int)gpp->gvahand->frame_counter);
+     gtk_progress_bar_set_text(GTK_PROGRESS_BAR(gpp->progress_bar), progressMsg);
+     g_free(progressMsg);
+  }
 
   /* g_main_context_iteration makes sure that
    *  gtk does refresh widgets,  and react on events while the videoapi
diff --git a/gap/gap_video_index_creator.c b/gap/gap_video_index_creator.c
index e997315..efe4c6c 100644
--- a/gap/gap_video_index_creator.c
+++ b/gap/gap_video_index_creator.c
@@ -1588,7 +1588,19 @@ p_vid_progress_callback(gdouble progress
                                 );
         break;
       case FULLSCAN_MODE:
-        message = g_strdup_printf(_("Creating video index %0.3f %%"), progress * 100.0);
+        if (vipp->gvahand == NULL)
+        {
+          message = g_strdup_printf(_("Creating video index %0.3f %%")
+                                     , progress * 100.0
+                                     );
+        }
+        else
+        {
+          message = g_strdup_printf(_("Creating video index %0.3f %% (%d)")
+                                   , progress * 100.0
+                                   , (int)vipp->gvahand->frame_counter
+                                   );
+        }
         break;
       default:
         message = g_strdup_printf("%0.3f %%", progress * 100.0);
diff --git a/gap/iter_ALT/gen/plug_in_blinds_iter_ALT.inc b/gap/iter_ALT/gen/plug_in_blinds_iter_ALT.inc
index 47ff640..ab7aba7 100644
--- a/gap/iter_ALT/gen/plug_in_blinds_iter_ALT.inc
+++ b/gap/iter_ALT/gen/plug_in_blinds_iter_ALT.inc
@@ -8,10 +8,11 @@ gint p_plug_in_blinds_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble
     {
       gint     angledsp;
       gint     numsegs;
-      gint     orientation;
+      GimpOrientationType  orientation;
       gboolean bg_trans;
-    } t_plug_in_blinds_Vals; 
-
+    } t_plug_in_blinds_Vals;
+    
+ 
     t_plug_in_blinds_Vals  buf, *buf_from, *buf_to; 
 
     if(len_struct != sizeof(t_plug_in_blinds_Vals)) 
@@ -28,10 +29,12 @@ gint p_plug_in_blinds_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble
     buf_to   = (t_plug_in_blinds_Vals *)&g_plugin_data_to[0]; 
     memcpy(&buf, buf_from, sizeof(buf));
 
+
     p_delta_gint(&buf.angledsp, buf_from->angledsp, buf_to->angledsp, total_steps, current_step);
     p_delta_gint(&buf.numsegs, buf_from->numsegs, buf_to->numsegs, total_steps, current_step);
-    p_delta_gint(&buf.orientation, buf_from->orientation, buf_to->orientation, total_steps, current_step);
-
+    p_delta_GimpOrientationType(&buf.orientation, &buf_from->orientation, &buf_to->orientation, total_steps, 
current_step);
+    p_delta_gboolean(&buf.bg_trans, buf_from->bg_trans, buf_to->bg_trans, total_steps, current_step);
+    
     gimp_set_data("plug-in-blinds", &buf, sizeof(buf)); 
 
     return 0; /* OK */
diff --git a/gap/iter_ALT/gen/plug_in_checkerboard_iter_ALT.inc 
b/gap/iter_ALT/gen/plug_in_checkerboard_iter_ALT.inc
index 0f29997..421b2cd 100644
--- a/gap/iter_ALT/gen/plug_in_checkerboard_iter_ALT.inc
+++ b/gap/iter_ALT/gen/plug_in_checkerboard_iter_ALT.inc
@@ -6,8 +6,8 @@ gint p_plug_in_checkerboard_iter_ALT(GimpRunMode run_mode, gint32 total_steps, g
 {
     typedef struct t_plug_in_checkerboard_Vals 
     {
-      long      check_mode;
-      long      check_size;
+      gboolean mode;
+      gint     size;
     } t_plug_in_checkerboard_Vals; 
 
     t_plug_in_checkerboard_Vals  buf, *buf_from, *buf_to; 
@@ -26,8 +26,8 @@ gint p_plug_in_checkerboard_iter_ALT(GimpRunMode run_mode, gint32 total_steps, g
     buf_to   = (t_plug_in_checkerboard_Vals *)&g_plugin_data_to[0]; 
     memcpy(&buf, buf_from, sizeof(buf));
 
-    p_delta_long(&buf.check_mode, buf_from->check_mode, buf_to->check_mode, total_steps, current_step);
-    p_delta_long(&buf.check_size, buf_from->check_size, buf_to->check_size, total_steps, current_step);
+    p_delta_gboolean(&buf.mode, buf_from->mode, buf_to->mode, total_steps, current_step);
+    p_delta_gint(&buf.size, buf_from->size, buf_to->size, total_steps, current_step);
 
     gimp_set_data("plug-in-checkerboard", &buf, sizeof(buf)); 
 
diff --git a/gap/iter_ALT/gen/plug_in_destripe_iter_ALT.inc b/gap/iter_ALT/gen/plug_in_destripe_iter_ALT.inc
index c248f72..7e85d31 100644
--- a/gap/iter_ALT/gen/plug_in_destripe_iter_ALT.inc
+++ b/gap/iter_ALT/gen/plug_in_destripe_iter_ALT.inc
@@ -27,6 +27,7 @@ gint p_plug_in_destripe_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdoub
     buf_to   = (t_plug_in_destripe_Vals *)&g_plugin_data_to[0]; 
     memcpy(&buf, buf_from, sizeof(buf));
 
+    p_delta_gboolean(&buf.histogram, buf_from->histogram, buf_to->histogram, total_steps, current_step);
     p_delta_gint(&buf.avg_width, buf_from->avg_width, buf_to->avg_width, total_steps, current_step);
 
     buf.preview = FALSE;
diff --git a/gap/iter_ALT/gen/plug_in_engrave_iter_ALT.inc b/gap/iter_ALT/gen/plug_in_engrave_iter_ALT.inc
index e8a31cf..2db44ae 100644
--- a/gap/iter_ALT/gen/plug_in_engrave_iter_ALT.inc
+++ b/gap/iter_ALT/gen/plug_in_engrave_iter_ALT.inc
@@ -27,6 +27,7 @@ gint p_plug_in_engrave_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdoubl
     memcpy(&buf, buf_from, sizeof(buf));
 
     p_delta_gint(&buf.height, buf_from->height, buf_to->height, total_steps, current_step);
+    p_delta_gboolean(&buf.limit, buf_from->limit, buf_to->limit, total_steps, current_step);
 
     gimp_set_data("plug-in-engrave", &buf, sizeof(buf)); 
 
diff --git a/gap/iter_ALT/gen/plug_in_fractal_trace_iter_ALT.inc 
b/gap/iter_ALT/gen/plug_in_fractal_trace_iter_ALT.inc
index 40e2354..ca20a48 100644
--- a/gap/iter_ALT/gen/plug_in_fractal_trace_iter_ALT.inc
+++ b/gap/iter_ALT/gen/plug_in_fractal_trace_iter_ALT.inc
@@ -6,14 +6,15 @@ gint p_plug_in_fractal_trace_iter_ALT(GimpRunMode run_mode, gint32 total_steps,
 {
     typedef struct t_plug_in_fractal_trace_Vals 
     {
-      gdouble   xmin;
-      gdouble   xmax;
-      gdouble   ymin;
-      gdouble   ymax;
-      long      depth;
-      long      outside_type;
+      gdouble   x1;
+      gdouble   x2;
+      gdouble   y1;
+      gdouble   y2;
+      gint32    depth;
+      gint32    outside_type;
     } t_plug_in_fractal_trace_Vals; 
 
+
     t_plug_in_fractal_trace_Vals  buf, *buf_from, *buf_to; 
 
     if(len_struct != sizeof(t_plug_in_fractal_trace_Vals)) 
@@ -30,12 +31,12 @@ gint p_plug_in_fractal_trace_iter_ALT(GimpRunMode run_mode, gint32 total_steps,
     buf_to   = (t_plug_in_fractal_trace_Vals *)&g_plugin_data_to[0]; 
     memcpy(&buf, buf_from, sizeof(buf));
 
-    p_delta_gdouble(&buf.xmin, buf_from->xmin, buf_to->xmin, total_steps, current_step);
-    p_delta_gdouble(&buf.xmax, buf_from->xmax, buf_to->xmax, total_steps, current_step);
-    p_delta_gdouble(&buf.ymin, buf_from->ymin, buf_to->ymin, total_steps, current_step);
-    p_delta_gdouble(&buf.ymax, buf_from->ymax, buf_to->ymax, total_steps, current_step);
-    p_delta_long(&buf.depth, buf_from->depth, buf_to->depth, total_steps, current_step);
-    p_delta_long(&buf.outside_type, buf_from->outside_type, buf_to->outside_type, total_steps, current_step);
+    p_delta_gdouble(&buf.x1, buf_from->x1, buf_to->x1, total_steps, current_step);
+    p_delta_gdouble(&buf.x2, buf_from->x2, buf_to->x2, total_steps, current_step);
+    p_delta_gdouble(&buf.y1, buf_from->y1, buf_to->y1, total_steps, current_step);
+    p_delta_gdouble(&buf.y2, buf_from->y2, buf_to->y2, total_steps, current_step);
+    p_delta_gint32(&buf.depth, buf_from->depth, buf_to->depth, total_steps, current_step);
+    p_delta_gint32(&buf.outside_type, buf_from->outside_type, buf_to->outside_type, total_steps, 
current_step);
 
     gimp_set_data("plug-in-fractal-trace", &buf, sizeof(buf)); 
 
diff --git a/gap/iter_ALT/gen/plug_in_mblur_iter_ALT.inc b/gap/iter_ALT/gen/plug_in_mblur_iter_ALT.inc
index 93f240f..568b571 100644
--- a/gap/iter_ALT/gen/plug_in_mblur_iter_ALT.inc
+++ b/gap/iter_ALT/gen/plug_in_mblur_iter_ALT.inc
@@ -38,6 +38,8 @@ gint p_plug_in_mblur_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble
     p_delta_gdouble(&buf.center_x, buf_from->center_x, buf_to->center_x, total_steps, current_step);
     p_delta_gdouble(&buf.center_y, buf_from->center_y, buf_to->center_y, total_steps, current_step);
 
+    p_delta_gboolean(&buf.blur_outward, buf_from->blur_outward, buf_to->blur_outward, total_steps, 
current_step);
+ 
     gimp_set_data("plug-in-mblur", &buf, sizeof(buf)); 
 
     return 0; /* OK */
diff --git a/gap/iter_ALT/gen/plug_in_mosaic_iter_ALT.inc b/gap/iter_ALT/gen/plug_in_mosaic_iter_ALT.inc
index c0e71d4..5f65871 100644
--- a/gap/iter_ALT/gen/plug_in_mosaic_iter_ALT.inc
+++ b/gap/iter_ALT/gen/plug_in_mosaic_iter_ALT.inc
@@ -4,6 +4,14 @@
  */
 gint p_plug_in_mosaic_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble current_step, gint32 
len_struct) 
 {
+  typedef enum
+  {
+    SQUARES   = 0,
+    HEXAGONS  = 1,
+    OCTAGONS  = 2,
+    TRIANGLES = 3
+  } t_plug_in_mosaic_TileType;
+
     typedef struct t_plug_in_mosaic_Vals 
     {
       gdouble   tile_size;
@@ -13,14 +21,17 @@ gint p_plug_in_mosaic_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble
       long      tile_allow_split;
       gdouble   light_dir;
       gdouble   color_variation;
-      long      antialiasing;
-      long      color_averaging;
-      long      tile_type;
-      long      tile_surface;
-      long      grout_color;
+      gboolean  antialiasing;
+      gint      color_averaging;
+      t_plug_in_mosaic_TileType      tile_type;
+      gint      tile_surface;
+      gint      grout_color;
     } t_plug_in_mosaic_Vals; 
 
     t_plug_in_mosaic_Vals  buf, *buf_from, *buf_to; 
+    
+    gboolean l_boolean_switch;
+    
 
     if(len_struct != sizeof(t_plug_in_mosaic_Vals)) 
     {
@@ -43,11 +54,17 @@ gint p_plug_in_mosaic_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble
     p_delta_long(&buf.tile_allow_split, buf_from->tile_allow_split, buf_to->tile_allow_split, total_steps, 
current_step);
     p_delta_gdouble(&buf.light_dir, buf_from->light_dir, buf_to->light_dir, total_steps, current_step);
     p_delta_gdouble(&buf.color_variation, buf_from->color_variation, buf_to->color_variation, total_steps, 
current_step);
-    p_delta_long(&buf.antialiasing, buf_from->antialiasing, buf_to->antialiasing, total_steps, current_step);
-    p_delta_long(&buf.color_averaging, buf_from->color_averaging, buf_to->color_averaging, total_steps, 
current_step);
-    p_delta_long(&buf.tile_type, buf_from->tile_type, buf_to->tile_type, total_steps, current_step);
-    p_delta_long(&buf.tile_surface, buf_from->tile_surface, buf_to->tile_surface, total_steps, current_step);
-    p_delta_long(&buf.grout_color, buf_from->grout_color, buf_to->grout_color, total_steps, current_step);
+    p_delta_gboolean(&buf.antialiasing, buf_from->antialiasing, buf_to->antialiasing, total_steps, 
current_step);
+
+    p_delta_gboolean(&l_boolean_switch, FALSE, TRUE, total_steps, current_step);
+
+    /* enum is not iterated, just pick the other value when its time to switch */
+    buf.tile_type = (l_boolean_switch) ? buf_to->tile_type : buf_from->tile_type;
+
+    /* the follwning gint values are flags and therefore handled as gboolean types */
+    buf.color_averaging = (l_boolean_switch) ? buf_to->color_averaging : buf_from->color_averaging;
+    buf.tile_surface = (l_boolean_switch) ? buf_to->tile_surface : buf_from->tile_surface;
+    buf.grout_color = (l_boolean_switch) ? buf_to->grout_color : buf_from->grout_color;
 
     gimp_set_data("plug-in-mosaic", &buf, sizeof(buf)); 
 
diff --git a/gap/iter_ALT/gen/plug_in_newsprint_iter_ALT.inc b/gap/iter_ALT/gen/plug_in_newsprint_iter_ALT.inc
index a787f8e..7459371 100644
--- a/gap/iter_ALT/gen/plug_in_newsprint_iter_ALT.inc
+++ b/gap/iter_ALT/gen/plug_in_newsprint_iter_ALT.inc
@@ -6,18 +6,18 @@ gint p_plug_in_newsprint_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdou
 {
     typedef struct t_plug_in_newsprint_Vals 
     {
-      long      cell_width;
-      long      colorspace;
-      long      k_pullout;
+      gint      cell_width;
+      gint      colorspace;
+      gint      k_pullout;
       gdouble   gry_ang;
-      long      gry_spotfn;
+      gint      gry_spotfn;
       gdouble   red_ang;
-      long      red_spotfn;
+      gint      red_spotfn;
       gdouble   grn_ang;
-      long      grn_spotfn;
+      gint      grn_spotfn;
       gdouble   blu_ang;
-      long      blu_spotfn;
-      long      oversample;
+      gint      blu_spotfn;
+      gint      oversample;
     } t_plug_in_newsprint_Vals; 
 
     t_plug_in_newsprint_Vals  buf, *buf_from, *buf_to; 
@@ -36,18 +36,18 @@ gint p_plug_in_newsprint_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdou
     buf_to   = (t_plug_in_newsprint_Vals *)&g_plugin_data_to[0]; 
     memcpy(&buf, buf_from, sizeof(buf));
 
-    p_delta_long(&buf.cell_width, buf_from->cell_width, buf_to->cell_width, total_steps, current_step);
-    p_delta_long(&buf.colorspace, buf_from->colorspace, buf_to->colorspace, total_steps, current_step);
-    p_delta_long(&buf.k_pullout, buf_from->k_pullout, buf_to->k_pullout, total_steps, current_step);
+    p_delta_gint(&buf.cell_width, buf_from->cell_width, buf_to->cell_width, total_steps, current_step);
+    p_delta_gint(&buf.colorspace, buf_from->colorspace, buf_to->colorspace, total_steps, current_step);
+    p_delta_gint(&buf.k_pullout, buf_from->k_pullout, buf_to->k_pullout, total_steps, current_step);
     p_delta_gdouble(&buf.gry_ang, buf_from->gry_ang, buf_to->gry_ang, total_steps, current_step);
-    p_delta_long(&buf.gry_spotfn, buf_from->gry_spotfn, buf_to->gry_spotfn, total_steps, current_step);
+    p_delta_gint(&buf.gry_spotfn, buf_from->gry_spotfn, buf_to->gry_spotfn, total_steps, current_step);
     p_delta_gdouble(&buf.red_ang, buf_from->red_ang, buf_to->red_ang, total_steps, current_step);
-    p_delta_long(&buf.red_spotfn, buf_from->red_spotfn, buf_to->red_spotfn, total_steps, current_step);
+    p_delta_gint(&buf.red_spotfn, buf_from->red_spotfn, buf_to->red_spotfn, total_steps, current_step);
     p_delta_gdouble(&buf.grn_ang, buf_from->grn_ang, buf_to->grn_ang, total_steps, current_step);
-    p_delta_long(&buf.grn_spotfn, buf_from->grn_spotfn, buf_to->grn_spotfn, total_steps, current_step);
+    p_delta_gint(&buf.grn_spotfn, buf_from->grn_spotfn, buf_to->grn_spotfn, total_steps, current_step);
     p_delta_gdouble(&buf.blu_ang, buf_from->blu_ang, buf_to->blu_ang, total_steps, current_step);
-    p_delta_long(&buf.blu_spotfn, buf_from->blu_spotfn, buf_to->blu_spotfn, total_steps, current_step);
-    p_delta_long(&buf.oversample, buf_from->oversample, buf_to->oversample, total_steps, current_step);
+    p_delta_gint(&buf.blu_spotfn, buf_from->blu_spotfn, buf_to->blu_spotfn, total_steps, current_step);
+    p_delta_gint(&buf.oversample, buf_from->oversample, buf_to->oversample, total_steps, current_step);
 
     gimp_set_data("plug-in-newsprint", &buf, sizeof(buf)); 
 
diff --git a/gap/iter_ALT/gen/plug_in_ripple_iter_ALT.inc b/gap/iter_ALT/gen/plug_in_ripple_iter_ALT.inc
index 885ad48..3106055 100644
--- a/gap/iter_ALT/gen/plug_in_ripple_iter_ALT.inc
+++ b/gap/iter_ALT/gen/plug_in_ripple_iter_ALT.inc
@@ -6,14 +6,14 @@ gint p_plug_in_ripple_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble
 {
     typedef struct t_plug_in_ripple_Vals 
     {
-      gint          period;
-      gint          amplitude;
-      gint          orientation;
-      gint          edges;
-      gint          waveform;
-      gboolean      antialias;
-      gboolean      tile;
-      gint          phase_shift;
+      gint                   period;
+      gint                   amplitude;
+      GimpOrientationType    orientation;
+      gint                   edges;
+      gint                   waveform;
+      gboolean               antialias;
+      gboolean               tile;
+      gint                   phase_shift;
     } t_plug_in_ripple_Vals; 
 
     t_plug_in_ripple_Vals  buf, *buf_from, *buf_to; 
@@ -34,9 +34,11 @@ gint p_plug_in_ripple_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble
 
     p_delta_gint(&buf.period, buf_from->period, buf_to->period, total_steps, current_step);
     p_delta_gint(&buf.amplitude, buf_from->amplitude, buf_to->amplitude, total_steps, current_step);
-    p_delta_gint(&buf.orientation, buf_from->orientation, buf_to->orientation, total_steps, current_step);
+    p_delta_GimpOrientationType(&buf.orientation, &buf_from->orientation, &buf_to->orientation, total_steps, 
current_step);
     p_delta_gint(&buf.edges, buf_from->edges, buf_to->edges, total_steps, current_step);
     p_delta_gint(&buf.waveform, buf_from->waveform, buf_to->waveform, total_steps, current_step);
+    p_delta_gboolean(&buf.antialias, buf_from->antialias, buf_to->antialias, total_steps, current_step);
+    p_delta_gboolean(&buf.tile, buf_from->tile, buf_to->tile, total_steps, current_step);
     p_delta_gint(&buf.phase_shift, buf_from->phase_shift, buf_to->phase_shift, total_steps, current_step);
 
     gimp_set_data("plug-in-ripple", &buf, sizeof(buf)); 
diff --git a/gap/iter_ALT/gen/plug_in_shift_iter_ALT.inc b/gap/iter_ALT/gen/plug_in_shift_iter_ALT.inc
index 86d2bc7..a63348a 100644
--- a/gap/iter_ALT/gen/plug_in_shift_iter_ALT.inc
+++ b/gap/iter_ALT/gen/plug_in_shift_iter_ALT.inc
@@ -10,6 +10,8 @@ gint p_plug_in_shift_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble
       gint      orientation;
     } t_plug_in_shift_Vals; 
 
+    gboolean l_boolean_switch;
+
     t_plug_in_shift_Vals  buf, *buf_from, *buf_to; 
 
     if(len_struct != sizeof(t_plug_in_shift_Vals)) 
@@ -27,7 +29,10 @@ gint p_plug_in_shift_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble
     memcpy(&buf, buf_from, sizeof(buf));
 
     p_delta_gint(&buf.shift_amount, buf_from->shift_amount, buf_to->shift_amount, total_steps, current_step);
-    p_delta_gint(&buf.orientation, buf_from->orientation, buf_to->orientation, total_steps, current_step);
+
+    /* the gint orientation value has only 2 valid values 0 and 1, therefore itrate the orientation as 
boolean */
+    p_delta_gboolean(&l_boolean_switch, FALSE, TRUE, total_steps, current_step);
+    buf.orientation = (l_boolean_switch) ? buf_to->orientation : buf_from->orientation;
 
     gimp_set_data("plug-in-shift", &buf, sizeof(buf)); 
 
diff --git a/gap/iter_ALT/gen/plug_in_video_iter_ALT.inc b/gap/iter_ALT/gen/plug_in_video_iter_ALT.inc
index 9c06088..43f51ad 100644
--- a/gap/iter_ALT/gen/plug_in_video_iter_ALT.inc
+++ b/gap/iter_ALT/gen/plug_in_video_iter_ALT.inc
@@ -6,13 +6,15 @@ gint p_plug_in_video_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble
 {
     typedef struct t_plug_in_video_Vals 
     {
-      long      pattern_number;
-      long      additive;
-      long      rotated;
+      gint      pattern_number;
+      gint      additive;
+      gint      rotated;
     } t_plug_in_video_Vals; 
 
     t_plug_in_video_Vals  buf, *buf_from, *buf_to; 
 
+    gboolean l_boolean_switch;
+
     if(len_struct != sizeof(t_plug_in_video_Vals)) 
     {
       fprintf(stderr, "ERROR: p_plug_in_video_iter_ALT  stored Data missmatch in size %d != %d\n",   
@@ -27,9 +29,12 @@ gint p_plug_in_video_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble
     buf_to   = (t_plug_in_video_Vals *)&g_plugin_data_to[0]; 
     memcpy(&buf, buf_from, sizeof(buf));
 
-    p_delta_long(&buf.pattern_number, buf_from->pattern_number, buf_to->pattern_number, total_steps, 
current_step);
-    p_delta_long(&buf.additive, buf_from->additive, buf_to->additive, total_steps, current_step);
-    p_delta_long(&buf.rotated, buf_from->rotated, buf_to->rotated, total_steps, current_step);
+    p_delta_gint(&buf.pattern_number, buf_from->pattern_number, buf_to->pattern_number, total_steps, 
current_step);
+
+    p_delta_gboolean(&l_boolean_switch, FALSE, TRUE, total_steps, current_step);
+    buf.additive = (l_boolean_switch) ? buf_to->additive : buf_from->additive;
+    buf.rotated = (l_boolean_switch) ? buf_to->rotated : buf_from->rotated;
+
 
     gimp_set_data("plug-in-video", &buf, sizeof(buf)); 
 
diff --git a/gap/iter_ALT/gen/plug_in_waves_iter_ALT.inc b/gap/iter_ALT/gen/plug_in_waves_iter_ALT.inc
index 80d6a8b..2194c76 100644
--- a/gap/iter_ALT/gen/plug_in_waves_iter_ALT.inc
+++ b/gap/iter_ALT/gen/plug_in_waves_iter_ALT.inc
@@ -33,6 +33,7 @@ gint p_plug_in_waves_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble
     p_delta_gdouble(&buf.phase, buf_from->phase, buf_to->phase, total_steps, current_step);
     p_delta_gdouble(&buf.wavelength, buf_from->wavelength, buf_to->wavelength, total_steps, current_step);
     p_delta_gint32(&buf.type, buf_from->type, buf_to->type, total_steps, current_step);
+    p_delta_gboolean(&buf.reflective, buf_from->reflective, buf_to->reflective, total_steps, current_step);
 
     gimp_set_data("plug-in-waves", &buf, sizeof(buf)); 
 
diff --git a/gap/iter_ALT/mod/plug_in_applylens_iter_ALT.inc b/gap/iter_ALT/mod/plug_in_applylens_iter_ALT.inc
index 239c35e..18854a1 100644
--- a/gap/iter_ALT/mod/plug_in_applylens_iter_ALT.inc
+++ b/gap/iter_ALT/mod/plug_in_applylens_iter_ALT.inc
@@ -7,11 +7,15 @@ static gint p_plug_in_applylens_iter_ALT(GimpRunMode run_mode, gint32 total_step
     typedef struct t_plug_in_applylens_Vals 
     {
       gdouble   refraction;
-      long      keep_surroundings;
-      long      set_background;
-      long      set_transparent;
+      gboolean  keep_surr;
+      gboolean  use_bkgr;
+      gboolean  set_transparent;
     } t_plug_in_applylens_Vals; 
 
+
+  gdouble  refraction;
+
+
     t_plug_in_applylens_Vals  buf, *buf_from, *buf_to; 
 
     if(len_struct != sizeof(t_plug_in_applylens_Vals)) 
@@ -29,9 +33,9 @@ static gint p_plug_in_applylens_iter_ALT(GimpRunMode run_mode, gint32 total_step
     memcpy(&buf, buf_from, sizeof(buf));
 
     p_delta_gdouble(&buf.refraction, buf_from->refraction, buf_to->refraction, total_steps, current_step);
-    p_delta_long(&buf.keep_surroundings, buf_from->keep_surroundings, buf_to->keep_surroundings, 
total_steps, current_step);
-    p_delta_long(&buf.set_background, buf_from->set_background, buf_to->set_background, total_steps, 
current_step);
-    p_delta_long(&buf.set_transparent, buf_from->set_transparent, buf_to->set_transparent, total_steps, 
current_step);
+    p_delta_gboolean(&buf.keep_surr, buf_from->keep_surr, buf_to->keep_surr, total_steps, current_step);
+    p_delta_gboolean(&buf.use_bkgr, buf_from->use_bkgr, buf_to->use_bkgr, total_steps, current_step);
+    p_delta_gboolean(&buf.set_transparent, buf_from->set_transparent, buf_to->set_transparent, total_steps, 
current_step);
 
     gimp_set_data("plug-in-applylens", &buf, sizeof(buf)); 
 
diff --git a/gap/iter_ALT/mod/plug_in_bump_map_iter_ALT.inc b/gap/iter_ALT/mod/plug_in_bump_map_iter_ALT.inc
index ece022c..f78dcad 100644
--- a/gap/iter_ALT/mod/plug_in_bump_map_iter_ALT.inc
+++ b/gap/iter_ALT/mod/plug_in_bump_map_iter_ALT.inc
@@ -47,6 +47,8 @@ gint p_plug_in_bump_map_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdoub
     p_delta_gint(&buf.yofs, buf_from->yofs, buf_to->yofs, total_steps, current_step);
     p_delta_gint(&buf.waterlevel, buf_from->waterlevel, buf_to->waterlevel, total_steps, current_step);
     p_delta_gint(&buf.ambient, buf_from->ambient, buf_to->ambient, total_steps, current_step);
+    p_delta_gboolean(&buf.compensate, buf_from->compensate, buf_to->compensate, total_steps, current_step);
+    p_delta_gboolean(&buf.invert, buf_from->invert, buf_to->invert, total_steps, current_step);
     p_delta_gint(&buf.type, buf_from->type, buf_to->type, total_steps, current_step);
 
     gimp_set_data("plug-in-bump-map", &buf, sizeof(buf)); 
diff --git a/gap/iter_ALT/mod/plug_in_colors_channel_mixer_iter_ALT.inc 
b/gap/iter_ALT/mod/plug_in_colors_channel_mixer_iter_ALT.inc
index b79b839..57ed236 100644
--- a/gap/iter_ALT/mod/plug_in_colors_channel_mixer_iter_ALT.inc
+++ b/gap/iter_ALT/mod/plug_in_colors_channel_mixer_iter_ALT.inc
@@ -59,6 +59,9 @@ gint p_plug_in_colors_channel_mixer_iter_ALT(GimpRunMode run_mode, gint32 total_
     p_delta_channel_mixer_ch_type(&buf.blue, &buf_from->blue, &buf_to->blue, total_steps, current_step);
     p_delta_channel_mixer_ch_type(&buf.black, &buf_from->black, &buf_to->black, total_steps, current_step);
 
+    p_delta_gboolean(&buf.monochrome_flag, buf_from->monochrome_flag, buf_to->monochrome_flag, total_steps, 
current_step);
+    p_delta_gboolean(&buf.preserve_luminosity_flag, buf_from->preserve_luminosity_flag, 
buf_to->preserve_luminosity_flag, total_steps, current_step);
+
     buf.preview = FALSE;
 
     gimp_set_data("plug-in-colors-channel-mixer", &buf, sizeof(buf)); 
diff --git a/gap/iter_ALT/mod/plug_in_dog_iter_ALT.inc b/gap/iter_ALT/mod/plug_in_dog_iter_ALT.inc
index c59615b..5f8f006 100644
--- a/gap/iter_ALT/mod/plug_in_dog_iter_ALT.inc
+++ b/gap/iter_ALT/mod/plug_in_dog_iter_ALT.inc
@@ -30,6 +30,8 @@ gint p_plug_in_dog_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble cu
 
     p_delta_gdouble(&buf.inner, buf_from->inner, buf_to->inner, total_steps, current_step);
     p_delta_gdouble(&buf.outer, buf_from->outer, buf_to->outer, total_steps, current_step);
+    p_delta_gboolean(&buf.normalize, buf_from->normalize, buf_to->normalize, total_steps, current_step);
+    p_delta_gboolean(&buf.invert, buf_from->invert, buf_to->invert, total_steps, current_step);
 
 
     gimp_set_data("plug-in-dog", &buf, sizeof(buf)); 
diff --git a/gap/iter_ALT/mod/plug_in_map_object_iter_ALT.inc 
b/gap/iter_ALT/mod/plug_in_map_object_iter_ALT.inc
index 6d69ace..da883ca 100644
--- a/gap/iter_ALT/mod/plug_in_map_object_iter_ALT.inc
+++ b/gap/iter_ALT/mod/plug_in_map_object_iter_ALT.inc
@@ -21,8 +21,10 @@ gint p_plug_in_map_object_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdo
 
       gint antialiasing;
       gint create_new_image;
+      gint create_new_layer;
       gint transparent_background;
       gint tiled;
+      gint livepreview;
       gint showgrid;
       gint showcaps;
 
diff --git a/gap/iter_ALT/mod/plug_in_polar_coords_iter_ALT.inc 
b/gap/iter_ALT/mod/plug_in_polar_coords_iter_ALT.inc
index 7a740aa..278abd9 100644
--- a/gap/iter_ALT/mod/plug_in_polar_coords_iter_ALT.inc
+++ b/gap/iter_ALT/mod/plug_in_polar_coords_iter_ALT.inc
@@ -32,6 +32,9 @@ gint p_plug_in_polar_coords_iter_ALT(GimpRunMode run_mode, gint32 total_steps, g
     p_delta_gdouble(&buf.circle, buf_from->circle, buf_to->circle, total_steps, current_step);
     p_delta_gdouble(&buf.angle, buf_from->angle, buf_to->angle, total_steps, current_step);
 
+    p_delta_gboolean(&buf.backwards, buf_from->backwards, buf_to->backwards, total_steps, current_step);
+    p_delta_gboolean(&buf.inverse, buf_from->inverse, buf_to->inverse, total_steps, current_step);
+    p_delta_gboolean(&buf.polrec, buf_from->polrec, buf_to->polrec, total_steps, current_step);
 
     gimp_set_data("plug-in-polar-coords", &buf, sizeof(buf)); 
 
diff --git a/gap/iter_ALT/mod/plug_in_sinus_iter_ALT.inc b/gap/iter_ALT/mod/plug_in_sinus_iter_ALT.inc
index c7fc402..c290301 100644
--- a/gap/iter_ALT/mod/plug_in_sinus_iter_ALT.inc
+++ b/gap/iter_ALT/mod/plug_in_sinus_iter_ALT.inc
@@ -47,6 +47,7 @@ gint p_plug_in_sinus_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdouble
     p_delta_long(&buf.colors, buf_from->colors, buf_to->colors, total_steps, current_step);
     p_delta_GimpRGB(&buf.col1, &buf_from->col1, &buf_to->col1, total_steps, current_step);
     p_delta_GimpRGB(&buf.col2, &buf_from->col2, &buf_to->col2, total_steps, current_step);
+    p_delta_gboolean(&buf.random_seed, buf_from->random_seed, buf_to->random_seed, total_steps, 
current_step);
 
     gimp_set_data("plug-in-sinus", &buf, sizeof(buf)); 
 
diff --git a/gap/iter_ALT/mod/plug_in_solid_noise_iter_ALT.inc 
b/gap/iter_ALT/mod/plug_in_solid_noise_iter_ALT.inc
index e6b913e..3386078 100644
--- a/gap/iter_ALT/mod/plug_in_solid_noise_iter_ALT.inc
+++ b/gap/iter_ALT/mod/plug_in_solid_noise_iter_ALT.inc
@@ -31,6 +31,9 @@ gint p_plug_in_solid_noise_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gd
     buf_to   = (t_plug_in_solid_noise_Vals *)&g_plugin_data_to[0]; 
     memcpy(&buf, buf_from, sizeof(buf));
 
+    p_delta_gboolean(&buf.tilable, buf_from->tilable, buf_to->tilable, total_steps, current_step);
+    p_delta_gboolean(&buf.turbulent, buf_from->turbulent, buf_to->turbulent, total_steps, current_step);
+
     p_delta_guint(&buf.seed, buf_from->seed, buf_to->seed, total_steps, current_step);
     p_delta_gint(&buf.detail, buf_from->detail, buf_to->detail, total_steps, current_step);
     p_delta_gdouble(&buf.xsize, buf_from->xsize, buf_to->xsize, total_steps, current_step);
diff --git a/gap/iter_ALT/mod/plug_in_sparkle_iter_ALT.inc b/gap/iter_ALT/mod/plug_in_sparkle_iter_ALT.inc
index 61182a2..7a79e46 100644
--- a/gap/iter_ALT/mod/plug_in_sparkle_iter_ALT.inc
+++ b/gap/iter_ALT/mod/plug_in_sparkle_iter_ALT.inc
@@ -46,6 +46,11 @@ gint p_plug_in_sparkle_iter_ALT(GimpRunMode run_mode, gint32 total_steps, gdoubl
     p_delta_gdouble(&buf.opacity, buf_from->opacity, buf_to->opacity, total_steps, current_step);
     p_delta_gdouble(&buf.random_hue, buf_from->random_hue, buf_to->random_hue, total_steps, current_step);
     p_delta_gdouble(&buf.random_saturation, buf_from->random_saturation, buf_to->random_saturation, 
total_steps, current_step);
+ 
+    p_delta_gboolean(&buf.preserve_luminosity, buf_from->preserve_luminosity, buf_to->preserve_luminosity, 
total_steps, current_step);
+    p_delta_gboolean(&buf.invers, buf_from->invers, buf_to->invers, total_steps, current_step);
+    p_delta_gboolean(&buf.border, buf_from->border, buf_to->border, total_steps, current_step);
+ 
     p_delta_gint(&buf.colortype, buf_from->colortype, buf_to->colortype, total_steps, current_step);
 
     gimp_set_data("plug-in-sparkle", &buf, sizeof(buf)); 
diff --git a/libgapvidapi/gap_vid_api_ffmpeg.c b/libgapvidapi/gap_vid_api_ffmpeg.c
index 28d6f20..d7c05d2 100644
--- a/libgapvidapi/gap_vid_api_ffmpeg.c
+++ b/libgapvidapi/gap_vid_api_ffmpeg.c
@@ -847,7 +847,7 @@ p_wrapper_ffmpeg_get_video_chunk(t_GVA_Handle  *gvahand
 static t_GVA_RetCode
 p_wrapper_ffmpeg_get_next_frame(t_GVA_Handle *gvahand)
 {
-  p_private_ffmpeg_get_next_frame(gvahand, FALSE);
+  return (p_private_ffmpeg_get_next_frame(gvahand, FALSE));
 }  /* end  p_wrapper_ffmpeg_get_next_frame*/
 
 
@@ -1496,8 +1496,19 @@ p_private_ffmpeg_get_next_frame(t_GVA_Handle *gvahand, gboolean do_copy_raw_chun
 
   GAP_TIMM_STOP_FUNCTION(funcId);
 
-  if(l_rc == 1)  { return(GVA_RET_EOF); }
+  if(l_rc == 1)
+  {
+    if(gap_debug)
+    {
+      printf("p_private_ffmpeg_get_next_frame: returning %d GVA_RET_EOF\n", (int)GVA_RET_EOF);
+    } 
+    return(GVA_RET_EOF);
+  }
 
+  if(gap_debug)
+  {
+    printf("p_private_ffmpeg_get_next_frame: returning %d GVA_RET_ERROR\n", (int)GVA_RET_ERROR);
+  } 
   return(GVA_RET_ERROR);
 }  /* end p_private_ffmpeg_get_next_frame */
 
@@ -3454,9 +3465,13 @@ p_wrapper_ffmpeg_count_frames(t_GVA_Handle *gvahand)
     {
        /* READ FRAME */
        l_rc = p_wrapper_ffmpeg_get_next_frame(copy_gvahand);
+       if(gap_debug)
+       {
+         printf("p_wrapper_ffmpeg_count_frames: get_next l_rc:%d\n", (int)l_rc);
+       }
        if(l_rc != GVA_RET_OK)
        {
-          break;  /* eof, or fetch error */
+         break;  /* eof, or fetch error */
        }
        gvahand->frame_counter++;
        l_total_frames = MAX(l_total_frames, gvahand->frame_counter);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]