static void p_delta_drawable(gint32 *val, gint32 val_from, gint32 val_to, gint32 total_steps, gdouble current_step) { gint l_nlayers; gint32 *l_layers_list; gint32 l_tmp_image_id; gint l_idx, l_idx_from, l_idx_to; if((val_from < 0) || (val_to < 0)) { return; } l_tmp_image_id = gimp_drawable_image_id(val_from); /* check if from and to values are both valid drawables within the same image */ if ((l_tmp_image_id > 0) && (l_tmp_image_id = gimp_drawable_image_id(val_to))) { l_idx_from = -1; l_idx_to = -1; /* check the layerstack index of from and to drawable */ l_layers_list = gimp_image_get_layers(l_tmp_image_id, &l_nlayers); for (l_idx = l_nlayers -1; l_idx >= 0; l_idx--) { if( l_layers_list[l_idx] == val_from ) l_idx_from = l_idx; if( l_layers_list[l_idx] == val_to ) l_idx_to = l_idx; if((l_idx_from != -1) && (l_idx_to != -1)) { /* OK found both index values, iterate the index (proceed to next layer) */ p_delta_gint(&l_idx, l_idx_from, l_idx_to, total_steps, current_step); *val = l_layers_list[l_idx]; break; } } g_free (l_layers_list); } }
gint32 gimp_channel_get_image_id (gint32 channel_ID) { return gimp_drawable_image_id (channel_ID); }
gint32 gimp_layer_get_image_id (gint32 layer_ID) { return gimp_drawable_image_id (layer_ID); }