Stamps -> Rotation: Better mouse warping

Stamp width needed to be cut in half, since stamp's _center_ is
at the click (old_x) position.  Also, avoid warping outside of the
canvas.
This commit is contained in:
Bill Kendrick 2022-09-11 11:05:01 -07:00
parent cc28f48f7e
commit eaba5e94f4
2 changed files with 11 additions and 4 deletions

View file

@ -7,7 +7,7 @@ Various contributors (see below, and AUTHORS.txt)
http://www.tuxpaint.org/
2022.September.10 (0.9.29)
2022.September.11 (0.9.29)
* Improvements to "Stamp" tool:
-----------------------------
* Stamps may now be rotated.

View file

@ -22,7 +22,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
(See COPYING.txt)
June 14, 2002 - September 5, 2022
June 14, 2002 - September 11, 2022
*/
#include "platform.h"
@ -5827,11 +5827,18 @@ static void mainloop(void)
{
if (!no_stamp_rotation)
{
int mouse_warp_x;
/* Going through stamp rotation step, first */
/* Warp mouse to the far right of the stamp,
where we'll start at 0-degrees of rotation */
SDL_WarpMouse(r_tools.w + old_x + active_stamp->w, old_y);
where we'll start at 0-degrees of rotation
(keep it within the canvas, though!) */
mouse_warp_x = r_tools.w + old_x + (CUR_STAMP_W / 2);
if (mouse_warp_x >= WINDOW_WIDTH - r_ttoolopt.w)
mouse_warp_x = WINDOW_WIDTH - r_ttoolopt.w - 1;
SDL_WarpMouse(mouse_warp_x, old_y);
do_setcursor(cursor_rotate);
stamp_tool_mode = STAMP_TOOL_MODE_ROTATE;