mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-04 17:59:37 +00:00
applied (modified) patch from Ari Pollak which enables controlling the
2004-08-06 Michael Natterer <mitch@gimp.org> * app/tools/gimpsheartool.[ch]: applied (modified) patch from Ari Pollak which enables controlling the shear direction from the dialog and changing the shear direction without hitting "Reset". Fixes bug #149467. Also moved all static variables to the GimpShearTool struct and converted tabs to spaces.
This commit is contained in:
parent
91cf50aefb
commit
42bc755ca7
3 changed files with 78 additions and 53 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
||||||
|
2004-08-06 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
|
* app/tools/gimpsheartool.[ch]: applied (modified) patch from Ari
|
||||||
|
Pollak which enables controlling the shear direction from the
|
||||||
|
dialog and changing the shear direction without hitting "Reset".
|
||||||
|
Fixes bug #149467.
|
||||||
|
|
||||||
|
Also moved all static variables to the GimpShearTool struct and
|
||||||
|
converted tabs to spaces.
|
||||||
|
|
||||||
2004-08-06 DindinX <david@dindinx.org>
|
2004-08-06 DindinX <david@dindinx.org>
|
||||||
|
|
||||||
* plug-ins/common/nova.c: ported to GimpPreviewArea.
|
* plug-ins/common/nova.c: ported to GimpPreviewArea.
|
||||||
|
|
|
@ -58,7 +58,7 @@
|
||||||
#define MIN_MOVE 5
|
#define MIN_MOVE 5
|
||||||
|
|
||||||
|
|
||||||
/* forward function declarations */
|
/* local function prototypes */
|
||||||
|
|
||||||
static void gimp_shear_tool_class_init (GimpShearToolClass *klass);
|
static void gimp_shear_tool_class_init (GimpShearToolClass *klass);
|
||||||
static void gimp_shear_tool_init (GimpShearTool *shear_tool);
|
static void gimp_shear_tool_init (GimpShearTool *shear_tool);
|
||||||
|
@ -79,14 +79,12 @@ static void shear_y_mag_changed (GtkWidget *widget,
|
||||||
GimpTransformTool *tr_tool);
|
GimpTransformTool *tr_tool);
|
||||||
|
|
||||||
|
|
||||||
/* variables local to this file */
|
/* private variables */
|
||||||
static gdouble xshear_val;
|
|
||||||
static gdouble yshear_val;
|
|
||||||
|
|
||||||
static GimpTransformToolClass *parent_class = NULL;
|
static GimpTransformToolClass *parent_class = NULL;
|
||||||
|
|
||||||
|
|
||||||
/* Public functions */
|
/* public functions */
|
||||||
|
|
||||||
void
|
void
|
||||||
gimp_shear_tool_register (GimpToolRegisterCallback callback,
|
gimp_shear_tool_register (GimpToolRegisterCallback callback,
|
||||||
|
@ -162,16 +160,18 @@ gimp_shear_tool_init (GimpShearTool *shear_tool)
|
||||||
static void
|
static void
|
||||||
gimp_shear_tool_dialog (GimpTransformTool *tr_tool)
|
gimp_shear_tool_dialog (GimpTransformTool *tr_tool)
|
||||||
{
|
{
|
||||||
|
GimpShearTool *shear = GIMP_SHEAR_TOOL (tr_tool);
|
||||||
|
|
||||||
info_dialog_add_spinbutton (tr_tool->info_dialog,
|
info_dialog_add_spinbutton (tr_tool->info_dialog,
|
||||||
_("Shear magnitude X:"),
|
_("Shear magnitude X:"),
|
||||||
&xshear_val,
|
&shear->xshear_val,
|
||||||
-65536, 65536, 1, 15, 1, 1, 0,
|
-65536, 65536, 1, 15, 1, 1, 0,
|
||||||
G_CALLBACK (shear_x_mag_changed),
|
G_CALLBACK (shear_x_mag_changed),
|
||||||
tr_tool);
|
tr_tool);
|
||||||
|
|
||||||
info_dialog_add_spinbutton (tr_tool->info_dialog,
|
info_dialog_add_spinbutton (tr_tool->info_dialog,
|
||||||
_("Shear magnitude Y:"),
|
_("Shear magnitude Y:"),
|
||||||
&yshear_val,
|
&shear->yshear_val,
|
||||||
-65536, 65536, 1, 15, 1, 1, 0,
|
-65536, 65536, 1, 15, 1, 1, 0,
|
||||||
G_CALLBACK (shear_y_mag_changed),
|
G_CALLBACK (shear_y_mag_changed),
|
||||||
tr_tool);
|
tr_tool);
|
||||||
|
@ -203,24 +203,24 @@ gimp_shear_tool_motion (GimpTransformTool *tr_tool,
|
||||||
if (tr_tool->trans_info[HORZ_OR_VERT] == GIMP_ORIENTATION_UNKNOWN)
|
if (tr_tool->trans_info[HORZ_OR_VERT] == GIMP_ORIENTATION_UNKNOWN)
|
||||||
{
|
{
|
||||||
if (abs (diffx) > MIN_MOVE || abs (diffy) > MIN_MOVE)
|
if (abs (diffx) > MIN_MOVE || abs (diffy) > MIN_MOVE)
|
||||||
{
|
{
|
||||||
if (abs (diffx) > abs (diffy))
|
if (abs (diffx) > abs (diffy))
|
||||||
{
|
{
|
||||||
tr_tool->trans_info[HORZ_OR_VERT] = GIMP_ORIENTATION_HORIZONTAL;
|
tr_tool->trans_info[HORZ_OR_VERT] = GIMP_ORIENTATION_HORIZONTAL;
|
||||||
tr_tool->trans_info[XSHEAR] = 0.0;
|
tr_tool->trans_info[XSHEAR] = 0.0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tr_tool->trans_info[HORZ_OR_VERT] = GIMP_ORIENTATION_VERTICAL;
|
tr_tool->trans_info[HORZ_OR_VERT] = GIMP_ORIENTATION_VERTICAL;
|
||||||
tr_tool->trans_info[XSHEAR] = 0.0;
|
tr_tool->trans_info[XSHEAR] = 0.0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* set the current coords to the last ones */
|
/* set the current coords to the last ones */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tr_tool->curx = tr_tool->lastx;
|
tr_tool->curx = tr_tool->lastx;
|
||||||
tr_tool->cury = tr_tool->lasty;
|
tr_tool->cury = tr_tool->lasty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if the direction is known, keep track of the magnitude */
|
/* if the direction is known, keep track of the magnitude */
|
||||||
|
@ -229,38 +229,38 @@ gimp_shear_tool_motion (GimpTransformTool *tr_tool,
|
||||||
dir = tr_tool->trans_info[HORZ_OR_VERT];
|
dir = tr_tool->trans_info[HORZ_OR_VERT];
|
||||||
|
|
||||||
switch (tr_tool->function)
|
switch (tr_tool->function)
|
||||||
{
|
{
|
||||||
case TRANSFORM_HANDLE_1:
|
case TRANSFORM_HANDLE_1:
|
||||||
if (dir == GIMP_ORIENTATION_HORIZONTAL)
|
if (dir == GIMP_ORIENTATION_HORIZONTAL)
|
||||||
tr_tool->trans_info[XSHEAR] -= diffx;
|
tr_tool->trans_info[XSHEAR] -= diffx;
|
||||||
else
|
else
|
||||||
tr_tool->trans_info[YSHEAR] -= diffy;
|
tr_tool->trans_info[YSHEAR] -= diffy;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TRANSFORM_HANDLE_2:
|
case TRANSFORM_HANDLE_2:
|
||||||
if (dir == GIMP_ORIENTATION_HORIZONTAL)
|
if (dir == GIMP_ORIENTATION_HORIZONTAL)
|
||||||
tr_tool->trans_info[XSHEAR] -= diffx;
|
tr_tool->trans_info[XSHEAR] -= diffx;
|
||||||
else
|
else
|
||||||
tr_tool->trans_info[YSHEAR] += diffy;
|
tr_tool->trans_info[YSHEAR] += diffy;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TRANSFORM_HANDLE_3:
|
case TRANSFORM_HANDLE_3:
|
||||||
if (dir == GIMP_ORIENTATION_HORIZONTAL)
|
if (dir == GIMP_ORIENTATION_HORIZONTAL)
|
||||||
tr_tool->trans_info[XSHEAR] += diffx;
|
tr_tool->trans_info[XSHEAR] += diffx;
|
||||||
else
|
else
|
||||||
tr_tool->trans_info[YSHEAR] -= diffy;
|
tr_tool->trans_info[YSHEAR] -= diffy;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TRANSFORM_HANDLE_4:
|
case TRANSFORM_HANDLE_4:
|
||||||
if (dir == GIMP_ORIENTATION_HORIZONTAL)
|
if (dir == GIMP_ORIENTATION_HORIZONTAL)
|
||||||
tr_tool->trans_info[XSHEAR] += diffx;
|
tr_tool->trans_info[XSHEAR] += diffx;
|
||||||
else
|
else
|
||||||
tr_tool->trans_info[YSHEAR] += diffy;
|
tr_tool->trans_info[YSHEAR] += diffy;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -270,6 +270,10 @@ gimp_shear_tool_recalc (GimpTransformTool *tr_tool,
|
||||||
{
|
{
|
||||||
gdouble amount;
|
gdouble amount;
|
||||||
|
|
||||||
|
if (tr_tool->trans_info[XSHEAR] == 0.0 &&
|
||||||
|
tr_tool->trans_info[YSHEAR] == 0.0)
|
||||||
|
tr_tool->trans_info[HORZ_OR_VERT] = GIMP_ORIENTATION_UNKNOWN;
|
||||||
|
|
||||||
if (tr_tool->trans_info[HORZ_OR_VERT] == GIMP_ORIENTATION_HORIZONTAL)
|
if (tr_tool->trans_info[HORZ_OR_VERT] == GIMP_ORIENTATION_HORIZONTAL)
|
||||||
amount = tr_tool->trans_info[XSHEAR];
|
amount = tr_tool->trans_info[XSHEAR];
|
||||||
else
|
else
|
||||||
|
@ -293,8 +297,10 @@ gimp_shear_tool_recalc (GimpTransformTool *tr_tool,
|
||||||
static void
|
static void
|
||||||
shear_info_update (GimpTransformTool *tr_tool)
|
shear_info_update (GimpTransformTool *tr_tool)
|
||||||
{
|
{
|
||||||
xshear_val = tr_tool->trans_info[XSHEAR];
|
GimpShearTool *shear = GIMP_SHEAR_TOOL (tr_tool);
|
||||||
yshear_val = tr_tool->trans_info[YSHEAR];
|
|
||||||
|
shear->xshear_val = tr_tool->trans_info[XSHEAR];
|
||||||
|
shear->yshear_val = tr_tool->trans_info[YSHEAR];
|
||||||
|
|
||||||
info_dialog_update (tr_tool->info_dialog);
|
info_dialog_update (tr_tool->info_dialog);
|
||||||
info_dialog_show (tr_tool->info_dialog);
|
info_dialog_show (tr_tool->info_dialog);
|
||||||
|
@ -312,6 +318,9 @@ shear_x_mag_changed (GtkWidget *widget,
|
||||||
{
|
{
|
||||||
gimp_draw_tool_pause (GIMP_DRAW_TOOL (tr_tool));
|
gimp_draw_tool_pause (GIMP_DRAW_TOOL (tr_tool));
|
||||||
|
|
||||||
|
if (tr_tool->trans_info[HORZ_OR_VERT] == GIMP_ORIENTATION_UNKNOWN)
|
||||||
|
tr_tool->trans_info[HORZ_OR_VERT] = GIMP_ORIENTATION_HORIZONTAL;
|
||||||
|
|
||||||
tr_tool->trans_info[XSHEAR] = value;
|
tr_tool->trans_info[XSHEAR] = value;
|
||||||
|
|
||||||
gimp_shear_tool_recalc (tr_tool, GIMP_TOOL (tr_tool)->gdisp);
|
gimp_shear_tool_recalc (tr_tool, GIMP_TOOL (tr_tool)->gdisp);
|
||||||
|
@ -334,6 +343,9 @@ shear_y_mag_changed (GtkWidget *widget,
|
||||||
{
|
{
|
||||||
gimp_draw_tool_pause (GIMP_DRAW_TOOL (tr_tool));
|
gimp_draw_tool_pause (GIMP_DRAW_TOOL (tr_tool));
|
||||||
|
|
||||||
|
if (tr_tool->trans_info[HORZ_OR_VERT] == GIMP_ORIENTATION_UNKNOWN)
|
||||||
|
tr_tool->trans_info[HORZ_OR_VERT] = GIMP_ORIENTATION_VERTICAL;
|
||||||
|
|
||||||
tr_tool->trans_info[YSHEAR] = value;
|
tr_tool->trans_info[YSHEAR] = value;
|
||||||
|
|
||||||
gimp_shear_tool_recalc (tr_tool, GIMP_TOOL (tr_tool)->gdisp);
|
gimp_shear_tool_recalc (tr_tool, GIMP_TOOL (tr_tool)->gdisp);
|
||||||
|
|
|
@ -37,6 +37,9 @@ typedef struct _GimpShearToolClass GimpShearToolClass;
|
||||||
struct _GimpShearTool
|
struct _GimpShearTool
|
||||||
{
|
{
|
||||||
GimpTransformTool parent_instance;
|
GimpTransformTool parent_instance;
|
||||||
|
|
||||||
|
gdouble xshear_val;
|
||||||
|
gdouble yshear_val;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GimpShearToolClass
|
struct _GimpShearToolClass
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue