app/core/gimpcoords-interpolate.c app/core/gimpbrush-transform.c

2009-02-10  Sven Neumann  <sven@gimp.org>

	* app/core/gimpcoords-interpolate.c
	* app/core/gimpbrush-transform.c
	* app/paint/gimppaintoptions.c
	* app/display/gimpdisplayshell-coords.c: applied patch from 
Alexia
	Death that fixes the direction of brush rotation (bug #520078).


svn path=/trunk/; revision=28010
This commit is contained in:
Sven Neumann 2009-02-10 21:07:35 +00:00 committed by Sven Neumann
parent fd4b557fd7
commit f64e2a76bf
5 changed files with 33 additions and 24 deletions

View file

@ -1,3 +1,11 @@
2009-02-10 Sven Neumann <sven@gimp.org>
* app/core/gimpcoords-interpolate.c
* app/core/gimpbrush-transform.c
* app/paint/gimppaintoptions.c
* app/display/gimpdisplayshell-coords.c: applied patch from Alexia
Death that fixes the direction of brush rotation (bug #520078).
2009-02-10 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-coords.c

View file

@ -205,7 +205,7 @@ gimp_brush_transform_matrix (GimpBrush *brush,
gimp_matrix3_identity (matrix);
gimp_matrix3_translate (matrix, - center_x, - center_x);
gimp_matrix3_rotate (matrix, 2 * G_PI * angle);
gimp_matrix3_rotate (matrix, -2 * G_PI * angle);
gimp_matrix3_translate (matrix, center_x, center_y);
gimp_matrix3_scale (matrix, scale, scale);
}

View file

@ -40,11 +40,11 @@ static void gimp_coords_interpolate_bezier_internal (const GimpCoords bezie
GArray **ret_coords,
GArray **ret_params,
gint depth);
static gdouble gimp_coords_get_catmull_spline_point (gdouble t,
gdouble p0,
gdouble p1,
gdouble p2,
gdouble p3);
static gdouble gimp_coords_get_catmull_spline_point (const gdouble t,
const gdouble p0,
const gdouble p1,
const gdouble p2,
const gdouble p3);
/* Functions for bezier subdivision */
@ -226,15 +226,15 @@ gimp_coords_interpolate_catmull (const GimpCoords catmul_pt1,
GArray **ret_coords,
GArray **ret_params)
{
gdouble delta_x, delta_y;
gdouble distance;
gint num_points;
gint n;
gdouble delta_x, delta_y;
gdouble distance;
gint num_points;
gint n;
GimpCoords past_coords;
GimpCoords start_coords;
GimpCoords end_coords;
GimpCoords future_coords;
GimpCoords past_coords;
GimpCoords start_coords;
GimpCoords end_coords;
GimpCoords future_coords;
delta_x = catmul_pt3.x - catmul_pt2.x;
delta_y = catmul_pt3.y - catmul_pt2.y;
@ -323,7 +323,7 @@ gimp_coords_interpolate_catmull (const GimpCoords catmul_pt1,
}
else
{
res_coords.direction = atan (delta_y / delta_x) / (2 * G_PI);
res_coords.direction = atan ((- delta_y) / delta_x) / (2 * G_PI);
if (delta_x > 0.0)
res_coords.direction = res_coords.direction + 0.5;
@ -337,11 +337,11 @@ gimp_coords_interpolate_catmull (const GimpCoords catmul_pt1,
}
static gdouble
gimp_coords_get_catmull_spline_point (gdouble t,
gdouble p0,
gdouble p1,
gdouble p2,
gdouble p3)
gimp_coords_get_catmull_spline_point (const gdouble t,
const gdouble p0,
const gdouble p1,
const gdouble p2,
const gdouble p3)
{
return ((((-t + 2.0) * t - 1.0) * t / 2.0) * p0 +

View file

@ -298,12 +298,13 @@ gimp_display_shell_eval_event (GimpDisplayShell *shell,
}
else
{
coords->direction = atan (delta_y / delta_x) / (2 * G_PI);
if (delta_x > 0.0)
coords->direction = atan ((- 1.0 * delta_y) / delta_x) / (2 * G_PI);
if (delta_x < 0.0)
coords->direction = coords->direction + 0.5;
}
delta_dir = coords->direction - shell->last_coords.direction;
if ((fabs (delta_dir) > 0.5) && (delta_dir < 0.0))
coords->direction = 0.3 * coords->direction + 0.7 * (shell->last_coords.direction - 1.0);
else if ((fabs (delta_dir) > 0.5) && (delta_dir > 0.0))

View file

@ -503,7 +503,7 @@ gimp_paint_options_set_property (GObject *object,
break;
case PROP_BRUSH_ANGLE:
options->brush_angle = g_value_get_double (value) / 360.0;
options->brush_angle = - 1.0 * g_value_get_double (value) / 360.0; /* let's make the angle mathematically correct */
break;
case PROP_APPLICATION_MODE:
@ -742,7 +742,7 @@ gimp_paint_options_get_property (GObject *object,
break;
case PROP_BRUSH_ANGLE:
g_value_set_double (value, options->brush_angle * 360.0);
g_value_set_double (value, - 1.0 * options->brush_angle * 360.0); /* mathematically correct -> intuitively correct */
break;
case PROP_APPLICATION_MODE: