--- gimp-painter--2.4.6.old/app/dialogs/about-dialog.c Tue Aug 19 18:20:08 2008 +++ gimp-painter--2.4.6/app/dialogs/about-dialog.c Tue Aug 19 18:18:44 2008 @@ -611,7 +611,7 @@ gtk_widget_show (label); #endif - label = gtk_label_new (_("gimp-painter- (build 080620)")); + label = gtk_label_new (_("gimp-painter- (release 080819)")); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); gtk_box_reorder_child (GTK_BOX (vbox), label, 2); gtk_widget_show (label); --- gimp-painter--2.4.6.old/app/paint/gimpmixbrush.c Tue Aug 19 18:20:08 2008 +++ gimp-painter--2.4.6/app/paint/gimpmixbrush.c Tue Aug 12 20:17:34 2008 @@ -82,6 +82,8 @@ gdouble fringe_contrast; gdouble fringe_contrast_offset; gdouble grain; + gint texture_jitter_x; + gint texture_jitter_y; gboolean is_rgb; gboolean has_alpha; gboolean active_components[MAX_CHANNELS]; @@ -173,6 +175,7 @@ gboolean fringe, gdouble fringe_contrast, gdouble grain, + gint jitter, GimpUpdateFreqOptions *update_freq_options); static void composite_dab (CompositeDabParam *params, @@ -668,6 +671,7 @@ mixbrush_options->texture_options->fringe, mixbrush_options->texture_options->fringe_contrast, grain, + mixbrush_options->texture_options->jitter, paint_options->update_freq_options); } else @@ -1038,6 +1042,7 @@ gboolean fringe, gdouble fringe_contrast, gdouble grain, + gint jitter, GimpUpdateFreqOptions *update_freq_options) { CompositeDabParam params; @@ -1103,6 +1108,8 @@ params.fringe = fringe; params.fringe_contrast = fringe_contrast; params.fringe_contrast_offset = (fringe_contrast - 1.0) * 0.5; + params.texture_jitter_x = g_random_int_range (-jitter, jitter + 1); + params.texture_jitter_y = g_random_int_range (-jitter, jitter + 1); params.texture_data = temp_buf_data (texture->mask); params.texture_bytes = texture->mask->bytes; @@ -1328,8 +1335,13 @@ guchar *texture_row_data; /* calc origin of texture buffer */ - texture_off_x = params->drawable_x + params->x + maskPR->x; - texture_off_y = params->drawable_y + params->y + maskPR->y; + texture_off_x = params->drawable_x + params->x + maskPR->x + params->texture_jitter_x; + if (texture_off_x < 0) + texture_off_x = params->texture_width + (texture_off_x % params->texture_width); + + texture_off_y = params->drawable_y + params->y + maskPR->y + params->texture_jitter_y; + if (texture_off_y < 0) + texture_off_y = params->texture_height + (texture_off_y % params->texture_height); src_data = srcPR->data; src_bytes = srcPR->bytes; --- gimp-painter--2.4.6.old/app/paint/gimpmixbrushoptions.c Fri Jun 20 12:33:52 2008 +++ gimp-painter--2.4.6/app/paint/gimpmixbrushoptions.c Tue Aug 12 19:53:28 2008 @@ -32,6 +32,7 @@ #define MIXBRUSH_DEFAULT_TEXTURE_FRINGE FALSE #define MIXBRUSH_DEFAULT_TEXTURE_FRINGE_CONTRAST 1.0 #define MIXBRUSH_DEFAULT_TEXTURE_GRAIN 0.0 +#define MIXBRUSH_DEFAULT_TEXTURE_JITTER 0 #define MIXBRUSH_DEFAULT_MAIN_COLOR_DENSITY 0.5 #define MIXBRUSH_DEFAULT_MAIN_COLOR_RATE 0.2 @@ -66,6 +67,7 @@ PROP_TEXTURE_GRAIN_PRESSURE_IN2, PROP_TEXTURE_GRAIN_PRESSURE_OUT1, PROP_TEXTURE_GRAIN_PRESSURE_OUT2, + PROP_TEXTURE_JITTER, PROP_MAIN_COLOR_DENSITY, PROP_MAIN_COLOR_RATE, @@ -166,6 +168,11 @@ 0.0, 1.0, MIXBRUSH_DEFAULT_PRESSURE_OUT2, GIMP_PARAM_STATIC_STRINGS); + GIMP_CONFIG_INSTALL_PROP_UINT (object_class, PROP_TEXTURE_JITTER, + "texture-jitter", NULL, + 0, 1000, MIXBRUSH_DEFAULT_TEXTURE_JITTER, + GIMP_PARAM_STATIC_STRINGS); + GIMP_CONFIG_INSTALL_PROP_DOUBLE (object_class, PROP_MAIN_COLOR_DENSITY, "main-color-density", NULL, 0.0, 1.0, MIXBRUSH_DEFAULT_MAIN_COLOR_DENSITY, @@ -372,6 +379,9 @@ case PROP_TEXTURE_GRAIN_PRESSURE_OUT2: texture_options->grain_pressure_out2 = g_value_get_double (value); break; + case PROP_TEXTURE_JITTER: + texture_options->jitter = g_value_get_uint (value); + break; case PROP_MAIN_COLOR_DENSITY: options->main_color_density = g_value_get_double (value); break; @@ -502,6 +512,9 @@ break; case PROP_TEXTURE_GRAIN_PRESSURE_OUT2: g_value_set_double (value, texture_options->grain_pressure_out2); + break; + case PROP_TEXTURE_JITTER: + g_value_set_uint (value, texture_options->jitter); break; case PROP_MAIN_COLOR_DENSITY: g_value_set_double (value, options->main_color_density); --- gimp-painter--2.4.6.old/app/paint/gimpmixbrushoptions.h Fri Jun 20 12:33:52 2008 +++ gimp-painter--2.4.6/app/paint/gimpmixbrushoptions.h Thu Oct 24 11:26:18 1940 @@ -58,6 +58,7 @@ gdouble grain_pressure_in2; gdouble grain_pressure_out1; gdouble grain_pressure_out2; + guint jitter; } GimpTextureOptions; struct _GimpMixbrushOptions --- gimp-painter--2.4.6.old/app/tools/gimpmixbrushtool.c Fri Jun 20 12:33:52 2008 +++ gimp-painter--2.4.6/app/tools/gimpmixbrushtool.c Tue Aug 12 19:49:40 2008 @@ -92,7 +92,7 @@ /* Texture configurations */ { - table = gtk_table_new (3, 6, FALSE); + table = gtk_table_new (3, 7, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 2); mixbrush_frame = gimp_prop_expanding_frame_new (config, "use-texture", "Use texture", table, NULL); @@ -143,14 +143,20 @@ gtk_widget_show_all (expander); } + gimp_prop_scale_entry_new (config, "texture-jitter", + GTK_TABLE (table), 0, 4, + _("Jitter:"), + 10, 100, 0, + FALSE, 0, 1000); + mixbrush_button = gimp_prop_check_button_new (config, "texture-fringe", _("Apply fringe")); - gtk_table_attach (GTK_TABLE (table), mixbrush_button, 0, 3, 4, 5, + gtk_table_attach (GTK_TABLE (table), mixbrush_button, 0, 3, 5, 6, GTK_EXPAND | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); gtk_widget_show (mixbrush_button); gimp_prop_scale_entry_new (config, "texture-fringe-contrast", - GTK_TABLE (table), 0, 5, + GTK_TABLE (table), 0, 6, _("Contrast:"), 0.5, 1.0, 1, FALSE, 1.0, 10.0);