mirror of https://github.com/GNOME/gimp.git
parent
f0cde43787
commit
d82cdfc84b
|
@ -1,3 +1,8 @@
|
|||
Thu Nov 25 02:56:01 MET 1999 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* app/blend.c
|
||||
* app/paint_core.c: Ctrl now restrict to 15 degrees (on a circle)
|
||||
|
||||
Wed Nov 24 17:38:45 PST 1999 Manish Singh <yosh@gimp.org>
|
||||
|
||||
* Made 1.1.12 release
|
||||
|
|
56
app/blend.c
56
app/blend.c
|
@ -587,8 +587,8 @@ blend_motion (Tool *tool,
|
|||
&blend_tool->endx, &blend_tool->endy, FALSE, 1);
|
||||
|
||||
|
||||
/* Restrict to multiples of 15 degrees if shift is pressed */
|
||||
if (mevent->state & GDK_SHIFT_MASK)
|
||||
/* Restrict to multiples of 15 degrees if ctrl is pressed */
|
||||
if (mevent->state & GDK_CONTROL_MASK)
|
||||
{
|
||||
int tangens2[6] = { 34, 106, 196, 334, 618, 1944 };
|
||||
int cosinus[7] = { 256, 247, 222, 181, 128, 66, 0 };
|
||||
|
@ -612,58 +612,6 @@ blend_motion (Tool *tool,
|
|||
blend_tool->endx = blend_tool->startx + dx;
|
||||
blend_tool->endy = blend_tool->starty + dy;
|
||||
}
|
||||
/* Use another way to restrict to multiples of 15 degrees if ctrl is pressed */
|
||||
else if (mevent->state & GDK_CONTROL_MASK)
|
||||
{
|
||||
int tangens[5] = { 69, 148, 256, 443, 955 };
|
||||
int tangens2[6] = { 34, 106, 196, 334, 618, 1944 };
|
||||
int dx, dy, i, frac;
|
||||
|
||||
dx = blend_tool->endx - blend_tool->startx;
|
||||
dy = blend_tool->endy - blend_tool->starty;
|
||||
|
||||
if (dy)
|
||||
{
|
||||
frac = abs ((dx << 8) / dy);
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
if (frac < tangens2[i])
|
||||
break;
|
||||
}
|
||||
switch (i)
|
||||
{
|
||||
case (0):
|
||||
dx = 0;
|
||||
break;
|
||||
case (1):
|
||||
case (2):
|
||||
dx = dx * dy > 0 ?
|
||||
(tangens[i-1] * dy) / 256 : - ((tangens[i-1] * dy) / 256);
|
||||
break;
|
||||
case (3):
|
||||
if (abs (dx) < abs (dy))
|
||||
dx = dx * dy > 0 ?
|
||||
(tangens[i-1] * dy) / 256 : - ((tangens[i-1] * dy) / 256);
|
||||
else
|
||||
dy = dx * dy > 0 ?
|
||||
(tangens[5-i] * dx) / 256 : - ((tangens[5-i] * dx) / 256);
|
||||
break;
|
||||
case (4):
|
||||
case (5):
|
||||
dy = dx * dy > 0 ?
|
||||
(tangens[5-i] * dx) / 256 : - ((tangens[5-i] * dx) / 256);
|
||||
break;
|
||||
case (6):
|
||||
dy = 0;
|
||||
break;
|
||||
default:
|
||||
g_warning ("blend_motion: should never be reached!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
blend_tool->endx = blend_tool->startx + dx;
|
||||
blend_tool->endy = blend_tool->starty + dy;
|
||||
}
|
||||
|
||||
gtk_statusbar_pop (GTK_STATUSBAR (gdisp->statusbar), blend_tool->context_id);
|
||||
if (gdisp->dot_for_dot)
|
||||
|
|
|
@ -587,8 +587,8 @@ blend_motion (Tool *tool,
|
|||
&blend_tool->endx, &blend_tool->endy, FALSE, 1);
|
||||
|
||||
|
||||
/* Restrict to multiples of 15 degrees if shift is pressed */
|
||||
if (mevent->state & GDK_SHIFT_MASK)
|
||||
/* Restrict to multiples of 15 degrees if ctrl is pressed */
|
||||
if (mevent->state & GDK_CONTROL_MASK)
|
||||
{
|
||||
int tangens2[6] = { 34, 106, 196, 334, 618, 1944 };
|
||||
int cosinus[7] = { 256, 247, 222, 181, 128, 66, 0 };
|
||||
|
@ -612,58 +612,6 @@ blend_motion (Tool *tool,
|
|||
blend_tool->endx = blend_tool->startx + dx;
|
||||
blend_tool->endy = blend_tool->starty + dy;
|
||||
}
|
||||
/* Use another way to restrict to multiples of 15 degrees if ctrl is pressed */
|
||||
else if (mevent->state & GDK_CONTROL_MASK)
|
||||
{
|
||||
int tangens[5] = { 69, 148, 256, 443, 955 };
|
||||
int tangens2[6] = { 34, 106, 196, 334, 618, 1944 };
|
||||
int dx, dy, i, frac;
|
||||
|
||||
dx = blend_tool->endx - blend_tool->startx;
|
||||
dy = blend_tool->endy - blend_tool->starty;
|
||||
|
||||
if (dy)
|
||||
{
|
||||
frac = abs ((dx << 8) / dy);
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
if (frac < tangens2[i])
|
||||
break;
|
||||
}
|
||||
switch (i)
|
||||
{
|
||||
case (0):
|
||||
dx = 0;
|
||||
break;
|
||||
case (1):
|
||||
case (2):
|
||||
dx = dx * dy > 0 ?
|
||||
(tangens[i-1] * dy) / 256 : - ((tangens[i-1] * dy) / 256);
|
||||
break;
|
||||
case (3):
|
||||
if (abs (dx) < abs (dy))
|
||||
dx = dx * dy > 0 ?
|
||||
(tangens[i-1] * dy) / 256 : - ((tangens[i-1] * dy) / 256);
|
||||
else
|
||||
dy = dx * dy > 0 ?
|
||||
(tangens[5-i] * dx) / 256 : - ((tangens[5-i] * dx) / 256);
|
||||
break;
|
||||
case (4):
|
||||
case (5):
|
||||
dy = dx * dy > 0 ?
|
||||
(tangens[5-i] * dx) / 256 : - ((tangens[5-i] * dx) / 256);
|
||||
break;
|
||||
case (6):
|
||||
dy = 0;
|
||||
break;
|
||||
default:
|
||||
g_warning ("blend_motion: should never be reached!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
blend_tool->endx = blend_tool->startx + dx;
|
||||
blend_tool->endy = blend_tool->starty + dy;
|
||||
}
|
||||
|
||||
gtk_statusbar_pop (GTK_STATUSBAR (gdisp->statusbar), blend_tool->context_id);
|
||||
if (gdisp->dot_for_dot)
|
||||
|
|
|
@ -244,26 +244,31 @@ paint_core_button_press (Tool *tool,
|
|||
paint_core->startwheel = paint_core->lastwheel;
|
||||
#endif /* GTK_HAVE_SIX_VALUATORS */
|
||||
|
||||
/* restrict to horizontal/vertical lines, if modifiers are pressed */
|
||||
if (bevent->state & GDK_MOD1_MASK)
|
||||
/* Restrict to multiples of 15 degrees if ctrl is pressed */
|
||||
if (bevent->state & GDK_CONTROL_MASK)
|
||||
{
|
||||
if (bevent->state & GDK_CONTROL_MASK)
|
||||
int tangens2[6] = { 34, 106, 196, 334, 618, 1944 };
|
||||
int cosinus[7] = { 256, 247, 222, 181, 128, 66, 0 };
|
||||
int dx, dy, i, radius, frac;
|
||||
|
||||
dx = paint_core->curx - paint_core->lastx;
|
||||
dy = paint_core->cury - paint_core->lasty;
|
||||
|
||||
if (dy)
|
||||
{
|
||||
double dx, dy;
|
||||
|
||||
dx = paint_core->curx - paint_core->lastx;
|
||||
dy = paint_core->cury - paint_core->lasty;
|
||||
|
||||
paint_core->curx = paint_core->lastx +
|
||||
(dx > 0 ? MAX (fabs (dx), fabs (dy)) : - MAX (fabs (dx), fabs (dy)));
|
||||
paint_core->cury = paint_core->lasty +
|
||||
(dy > 0 ? MAX (fabs (dx), fabs (dy)) : - MAX (fabs (dx), fabs (dy)));
|
||||
radius = sqrt (SQR (dx) + SQR (dy));
|
||||
frac = abs ((dx << 8) / dy);
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
if (frac < tangens2[i])
|
||||
break;
|
||||
}
|
||||
dx = dx > 0 ? (cosinus[6-i] * radius) >> 8 : - ((cosinus[6-i] * radius) >> 8);
|
||||
dy = dy > 0 ? (cosinus[i] * radius) >> 8 : - ((cosinus[i] * radius) >> 8);
|
||||
}
|
||||
else
|
||||
paint_core->curx = paint_core->lastx;
|
||||
paint_core->curx = paint_core->lastx + dx;
|
||||
paint_core->cury = paint_core->lasty + dy;
|
||||
}
|
||||
else if (bevent->state & GDK_CONTROL_MASK)
|
||||
paint_core->cury = paint_core->lasty;
|
||||
}
|
||||
|
||||
tool->state = ACTIVE;
|
||||
|
@ -448,29 +453,33 @@ paint_core_cursor_update (Tool *tool,
|
|||
dx = paint_core->curx - paint_core->lastx;
|
||||
dy = paint_core->cury - paint_core->lasty;
|
||||
|
||||
/* restrict to horizontal/vertical lines, if modifiers are pressed */
|
||||
if (mevent->state & GDK_MOD1_MASK)
|
||||
/* Restrict to multiples of 15 degrees if ctrl is pressed */
|
||||
if (mevent->state & GDK_CONTROL_MASK)
|
||||
{
|
||||
if (mevent->state & GDK_CONTROL_MASK)
|
||||
int idx = dx;
|
||||
int idy = dy;
|
||||
int tangens2[6] = { 34, 106, 196, 334, 618, 1944 };
|
||||
int cosinus[7] = { 256, 247, 222, 181, 128, 66, 0 };
|
||||
int i, radius, frac;
|
||||
|
||||
if (idy)
|
||||
{
|
||||
dx = paint_core->curx - paint_core->lastx;
|
||||
dy = paint_core->cury - paint_core->lasty;
|
||||
|
||||
paint_core->curx = paint_core->lastx +
|
||||
(dx > 0 ? MAX (fabs (dx), fabs (dy)) : - MAX (fabs (dx), fabs (dy)));
|
||||
paint_core->cury = paint_core->lasty +
|
||||
(dy > 0 ? MAX (fabs (dx), fabs (dy)) : - MAX (fabs (dx), fabs (dy)));
|
||||
radius = sqrt (SQR (idx) + SQR (idy));
|
||||
frac = abs ((idx << 8) / idy);
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
if (frac < tangens2[i])
|
||||
break;
|
||||
}
|
||||
dx = idx > 0 ? (cosinus[6-i] * radius) >> 8 : - ((cosinus[6-i] * radius) >> 8);
|
||||
dy = idy > 0 ? (cosinus[i] * radius) >> 8 : - ((cosinus[i] * radius) >> 8);
|
||||
}
|
||||
else
|
||||
paint_core->curx = paint_core->lastx;
|
||||
|
||||
paint_core->curx = paint_core->lastx + dx;
|
||||
paint_core->cury = paint_core->lasty + dy;
|
||||
}
|
||||
else if (mevent->state & GDK_CONTROL_MASK)
|
||||
paint_core->cury = paint_core->lasty;
|
||||
|
||||
/* show distance in statusbar */
|
||||
dx = paint_core->curx - paint_core->lastx;
|
||||
dy = paint_core->cury - paint_core->lasty;
|
||||
|
||||
if (gdisp->dot_for_dot)
|
||||
{
|
||||
d = sqrt (SQR (dx) + SQR (dy));
|
||||
|
|
|
@ -587,8 +587,8 @@ blend_motion (Tool *tool,
|
|||
&blend_tool->endx, &blend_tool->endy, FALSE, 1);
|
||||
|
||||
|
||||
/* Restrict to multiples of 15 degrees if shift is pressed */
|
||||
if (mevent->state & GDK_SHIFT_MASK)
|
||||
/* Restrict to multiples of 15 degrees if ctrl is pressed */
|
||||
if (mevent->state & GDK_CONTROL_MASK)
|
||||
{
|
||||
int tangens2[6] = { 34, 106, 196, 334, 618, 1944 };
|
||||
int cosinus[7] = { 256, 247, 222, 181, 128, 66, 0 };
|
||||
|
@ -612,58 +612,6 @@ blend_motion (Tool *tool,
|
|||
blend_tool->endx = blend_tool->startx + dx;
|
||||
blend_tool->endy = blend_tool->starty + dy;
|
||||
}
|
||||
/* Use another way to restrict to multiples of 15 degrees if ctrl is pressed */
|
||||
else if (mevent->state & GDK_CONTROL_MASK)
|
||||
{
|
||||
int tangens[5] = { 69, 148, 256, 443, 955 };
|
||||
int tangens2[6] = { 34, 106, 196, 334, 618, 1944 };
|
||||
int dx, dy, i, frac;
|
||||
|
||||
dx = blend_tool->endx - blend_tool->startx;
|
||||
dy = blend_tool->endy - blend_tool->starty;
|
||||
|
||||
if (dy)
|
||||
{
|
||||
frac = abs ((dx << 8) / dy);
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
if (frac < tangens2[i])
|
||||
break;
|
||||
}
|
||||
switch (i)
|
||||
{
|
||||
case (0):
|
||||
dx = 0;
|
||||
break;
|
||||
case (1):
|
||||
case (2):
|
||||
dx = dx * dy > 0 ?
|
||||
(tangens[i-1] * dy) / 256 : - ((tangens[i-1] * dy) / 256);
|
||||
break;
|
||||
case (3):
|
||||
if (abs (dx) < abs (dy))
|
||||
dx = dx * dy > 0 ?
|
||||
(tangens[i-1] * dy) / 256 : - ((tangens[i-1] * dy) / 256);
|
||||
else
|
||||
dy = dx * dy > 0 ?
|
||||
(tangens[5-i] * dx) / 256 : - ((tangens[5-i] * dx) / 256);
|
||||
break;
|
||||
case (4):
|
||||
case (5):
|
||||
dy = dx * dy > 0 ?
|
||||
(tangens[5-i] * dx) / 256 : - ((tangens[5-i] * dx) / 256);
|
||||
break;
|
||||
case (6):
|
||||
dy = 0;
|
||||
break;
|
||||
default:
|
||||
g_warning ("blend_motion: should never be reached!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
blend_tool->endx = blend_tool->startx + dx;
|
||||
blend_tool->endy = blend_tool->starty + dy;
|
||||
}
|
||||
|
||||
gtk_statusbar_pop (GTK_STATUSBAR (gdisp->statusbar), blend_tool->context_id);
|
||||
if (gdisp->dot_for_dot)
|
||||
|
|
|
@ -587,8 +587,8 @@ blend_motion (Tool *tool,
|
|||
&blend_tool->endx, &blend_tool->endy, FALSE, 1);
|
||||
|
||||
|
||||
/* Restrict to multiples of 15 degrees if shift is pressed */
|
||||
if (mevent->state & GDK_SHIFT_MASK)
|
||||
/* Restrict to multiples of 15 degrees if ctrl is pressed */
|
||||
if (mevent->state & GDK_CONTROL_MASK)
|
||||
{
|
||||
int tangens2[6] = { 34, 106, 196, 334, 618, 1944 };
|
||||
int cosinus[7] = { 256, 247, 222, 181, 128, 66, 0 };
|
||||
|
@ -612,58 +612,6 @@ blend_motion (Tool *tool,
|
|||
blend_tool->endx = blend_tool->startx + dx;
|
||||
blend_tool->endy = blend_tool->starty + dy;
|
||||
}
|
||||
/* Use another way to restrict to multiples of 15 degrees if ctrl is pressed */
|
||||
else if (mevent->state & GDK_CONTROL_MASK)
|
||||
{
|
||||
int tangens[5] = { 69, 148, 256, 443, 955 };
|
||||
int tangens2[6] = { 34, 106, 196, 334, 618, 1944 };
|
||||
int dx, dy, i, frac;
|
||||
|
||||
dx = blend_tool->endx - blend_tool->startx;
|
||||
dy = blend_tool->endy - blend_tool->starty;
|
||||
|
||||
if (dy)
|
||||
{
|
||||
frac = abs ((dx << 8) / dy);
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
if (frac < tangens2[i])
|
||||
break;
|
||||
}
|
||||
switch (i)
|
||||
{
|
||||
case (0):
|
||||
dx = 0;
|
||||
break;
|
||||
case (1):
|
||||
case (2):
|
||||
dx = dx * dy > 0 ?
|
||||
(tangens[i-1] * dy) / 256 : - ((tangens[i-1] * dy) / 256);
|
||||
break;
|
||||
case (3):
|
||||
if (abs (dx) < abs (dy))
|
||||
dx = dx * dy > 0 ?
|
||||
(tangens[i-1] * dy) / 256 : - ((tangens[i-1] * dy) / 256);
|
||||
else
|
||||
dy = dx * dy > 0 ?
|
||||
(tangens[5-i] * dx) / 256 : - ((tangens[5-i] * dx) / 256);
|
||||
break;
|
||||
case (4):
|
||||
case (5):
|
||||
dy = dx * dy > 0 ?
|
||||
(tangens[5-i] * dx) / 256 : - ((tangens[5-i] * dx) / 256);
|
||||
break;
|
||||
case (6):
|
||||
dy = 0;
|
||||
break;
|
||||
default:
|
||||
g_warning ("blend_motion: should never be reached!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
blend_tool->endx = blend_tool->startx + dx;
|
||||
blend_tool->endy = blend_tool->starty + dy;
|
||||
}
|
||||
|
||||
gtk_statusbar_pop (GTK_STATUSBAR (gdisp->statusbar), blend_tool->context_id);
|
||||
if (gdisp->dot_for_dot)
|
||||
|
|
|
@ -244,26 +244,31 @@ paint_core_button_press (Tool *tool,
|
|||
paint_core->startwheel = paint_core->lastwheel;
|
||||
#endif /* GTK_HAVE_SIX_VALUATORS */
|
||||
|
||||
/* restrict to horizontal/vertical lines, if modifiers are pressed */
|
||||
if (bevent->state & GDK_MOD1_MASK)
|
||||
/* Restrict to multiples of 15 degrees if ctrl is pressed */
|
||||
if (bevent->state & GDK_CONTROL_MASK)
|
||||
{
|
||||
if (bevent->state & GDK_CONTROL_MASK)
|
||||
int tangens2[6] = { 34, 106, 196, 334, 618, 1944 };
|
||||
int cosinus[7] = { 256, 247, 222, 181, 128, 66, 0 };
|
||||
int dx, dy, i, radius, frac;
|
||||
|
||||
dx = paint_core->curx - paint_core->lastx;
|
||||
dy = paint_core->cury - paint_core->lasty;
|
||||
|
||||
if (dy)
|
||||
{
|
||||
double dx, dy;
|
||||
|
||||
dx = paint_core->curx - paint_core->lastx;
|
||||
dy = paint_core->cury - paint_core->lasty;
|
||||
|
||||
paint_core->curx = paint_core->lastx +
|
||||
(dx > 0 ? MAX (fabs (dx), fabs (dy)) : - MAX (fabs (dx), fabs (dy)));
|
||||
paint_core->cury = paint_core->lasty +
|
||||
(dy > 0 ? MAX (fabs (dx), fabs (dy)) : - MAX (fabs (dx), fabs (dy)));
|
||||
radius = sqrt (SQR (dx) + SQR (dy));
|
||||
frac = abs ((dx << 8) / dy);
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
if (frac < tangens2[i])
|
||||
break;
|
||||
}
|
||||
dx = dx > 0 ? (cosinus[6-i] * radius) >> 8 : - ((cosinus[6-i] * radius) >> 8);
|
||||
dy = dy > 0 ? (cosinus[i] * radius) >> 8 : - ((cosinus[i] * radius) >> 8);
|
||||
}
|
||||
else
|
||||
paint_core->curx = paint_core->lastx;
|
||||
paint_core->curx = paint_core->lastx + dx;
|
||||
paint_core->cury = paint_core->lasty + dy;
|
||||
}
|
||||
else if (bevent->state & GDK_CONTROL_MASK)
|
||||
paint_core->cury = paint_core->lasty;
|
||||
}
|
||||
|
||||
tool->state = ACTIVE;
|
||||
|
@ -448,29 +453,33 @@ paint_core_cursor_update (Tool *tool,
|
|||
dx = paint_core->curx - paint_core->lastx;
|
||||
dy = paint_core->cury - paint_core->lasty;
|
||||
|
||||
/* restrict to horizontal/vertical lines, if modifiers are pressed */
|
||||
if (mevent->state & GDK_MOD1_MASK)
|
||||
/* Restrict to multiples of 15 degrees if ctrl is pressed */
|
||||
if (mevent->state & GDK_CONTROL_MASK)
|
||||
{
|
||||
if (mevent->state & GDK_CONTROL_MASK)
|
||||
int idx = dx;
|
||||
int idy = dy;
|
||||
int tangens2[6] = { 34, 106, 196, 334, 618, 1944 };
|
||||
int cosinus[7] = { 256, 247, 222, 181, 128, 66, 0 };
|
||||
int i, radius, frac;
|
||||
|
||||
if (idy)
|
||||
{
|
||||
dx = paint_core->curx - paint_core->lastx;
|
||||
dy = paint_core->cury - paint_core->lasty;
|
||||
|
||||
paint_core->curx = paint_core->lastx +
|
||||
(dx > 0 ? MAX (fabs (dx), fabs (dy)) : - MAX (fabs (dx), fabs (dy)));
|
||||
paint_core->cury = paint_core->lasty +
|
||||
(dy > 0 ? MAX (fabs (dx), fabs (dy)) : - MAX (fabs (dx), fabs (dy)));
|
||||
radius = sqrt (SQR (idx) + SQR (idy));
|
||||
frac = abs ((idx << 8) / idy);
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
if (frac < tangens2[i])
|
||||
break;
|
||||
}
|
||||
dx = idx > 0 ? (cosinus[6-i] * radius) >> 8 : - ((cosinus[6-i] * radius) >> 8);
|
||||
dy = idy > 0 ? (cosinus[i] * radius) >> 8 : - ((cosinus[i] * radius) >> 8);
|
||||
}
|
||||
else
|
||||
paint_core->curx = paint_core->lastx;
|
||||
|
||||
paint_core->curx = paint_core->lastx + dx;
|
||||
paint_core->cury = paint_core->lasty + dy;
|
||||
}
|
||||
else if (mevent->state & GDK_CONTROL_MASK)
|
||||
paint_core->cury = paint_core->lasty;
|
||||
|
||||
/* show distance in statusbar */
|
||||
dx = paint_core->curx - paint_core->lastx;
|
||||
dy = paint_core->cury - paint_core->lasty;
|
||||
|
||||
if (gdisp->dot_for_dot)
|
||||
{
|
||||
d = sqrt (SQR (dx) + SQR (dy));
|
||||
|
|
Loading…
Reference in New Issue