Bug 684330 - Rectangle tool's "fixed size" option is off-by-one

ROUND() is consistent only on positive values, and bad rounding
creates an offset when negative values are involved. Introduce
SIGNED_ROUND() and use it in gimprectangletool.c. It should probably
be used in much more places.
(cherry picked from commit 4a5a6ef914)
This commit is contained in:
Téo Mazars
2013-02-12 18:36:15 +01:00
committed by Michael Natterer
parent 6f1b26ddf7
commit 606532f5a8
3 changed files with 13 additions and 6 deletions

View File

@ -74,10 +74,18 @@ G_BEGIN_DECLS
* ROUND:
* @x: the value to be rounded.
*
* This macro rounds its argument @x to the nearest integer.
* This macro rounds its positive argument @x to the nearest integer.
**/
#define ROUND(x) ((int) ((x) + 0.5))
/**
* SIGNED_ROUND:
* @x: the value to be rounded.
*
* This macro rounds its argument @x to the nearest integer.
**/
#define SIGNED_ROUND(x) ((int) ((((x) < 0) ? (x) - 0.5 : (x) + 0.5)))
/**
* SQR:
* @x: the value to be squared.