A couple of rotate fixes + minor cleanup:
- The flip/rotate interaction is fixed by reverting a small part
of latest CVS commit.
- Rotate changes via flip_image() are now properly saved in CFG.
- Rotate reset button is now greyed out when it should.
- The reset button simply sets the UI rotation angle to zero
and no longer calls set_rotation_angle() directly. The latter is
an implementation issue reset doesn't need to be aware of.
There's only one call left to set_rotation_angle() so the function could
be eliminated by moving its code into adjustment_update_rotation().
diff --git a/ufraw_preview.c b/ufraw_preview.c
index 4710628..5d5fe97 100644
--- a/ufraw_preview.c
+++ b/ufraw_preview.c
@@ -2205,19 +2205,13 @@ static void flip_image(GtkWidget *widget, int flip)
data->unnormalized_angle -= 90;
break;
case 1:
- data->unnormalized_angle = 180-data->unnormalized_angle;
- if ( (data->reference_orientation&4) == 4)
- data->unnormalized_angle += 180;
- break;
case 2:
+ data->reference_orientation ^= flip;
data->unnormalized_angle = -data->unnormalized_angle;
- if ( (data->reference_orientation&4) == 4)
- data->unnormalized_angle += 180;
break;
default:
g_error("flip_image(): flip:%d invalid", flip);
}
- data->unnormalized_angle = remainder(data->unnormalized_angle, 360);
++data->FreezeDialog;
gtk_adjustment_set_value(data->RotationAdjustment,
data->unnormalized_angle);
@@ -2963,18 +2957,19 @@ static void set_rotation_angle(preview_data *data,
double angle)
{
int d;
- if (data->FreezeDialog)
- return;
-
/* Normalize the "unnormalized" value displayed to the user to
* -180 < a <= 180, though we later normalize to an orientation
* and flip plus 0 <= a < 90 rotation for processing. */
data->unnormalized_angle = remainder(angle, 360);
- gtk_adjustment_set_value(data->RotationAdjustment,
- data->unnormalized_angle);
CFG->rotationAngle = data->unnormalized_angle;
CFG->orientation = data->reference_orientation;
ufraw_normalize_rotation(data->UF);
+ if (data->FreezeDialog)
+ return;
+ gtk_adjustment_set_value(data->RotationAdjustment,
+ data->unnormalized_angle);
+ gtk_widget_set_sensitive(data->ResetRotationAdjustment,
+ data->unnormalized_angle != 0);
ufraw_get_image_dimensions(data->UF->raw, data->UF);
d = MIN(CFG->CropX1, CFG->CropX2 - data->UF->rotatedWidth);
if (d > 0) {
@@ -3018,15 +3013,17 @@ static void set_rotation_angle(preview_data *data,
double angle)
static void adjustment_update_rotation(GtkAdjustment *adj, gpointer user_data)
{
preview_data *data = get_preview_data(adj);
- set_rotation_angle(data, gtk_adjustment_get_value(adj));
+
(void)user_data;
+ set_rotation_angle(data, gtk_adjustment_get_value(adj));
}
static void adjustment_reset_rotation(GtkAdjustment *adj, gpointer user_data)
{
preview_data *data = get_preview_data(adj);
- set_rotation_angle(data, 0);
+
(void)user_data;
+ gtk_adjustment_set_value(data->RotationAdjustment, 0);
}
GtkWidget *reset_button(const char *tip, GCallback callback, void *data)
@@ -4938,6 +4935,8 @@ static void transformations_fill_interface(preview_data
*data, GtkWidget *page)
G_CALLBACK(adjustment_update_rotation),
&data->ResetRotationAdjustment, _("Reset Rotation Angle"),
G_CALLBACK(adjustment_reset_rotation));
+ gtk_widget_set_sensitive(data->ResetRotationAdjustment,
+ data->unnormalized_angle != 0);
// drawLines toggle button
GtkWidget *subtable = gtk_table_new(10, 10, FALSE);
--
Frank
------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
ufraw-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ufraw-devel