diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2009-01-23 19:29:03 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2009-01-23 19:29:03 +0000 |
commit | cc5c3f01c6958685130a9a037abaa4dd3df86b20 (patch) | |
tree | ada1f1aa398d95d87faa84aa4fd0f0c342a91492 | |
parent | ddc5e14034a837142ee7a49059e3715ad30ab9d2 (diff) | |
download | libcss-cc5c3f01c6958685130a9a037abaa4dd3df86b20.tar.gz libcss-cc5c3f01c6958685130a9a037abaa4dd3df86b20.tar.bz2 |
Introduce fixed point constants.
Range check azimuth angles.
svn path=/trunk/libcss/; revision=6183
-rw-r--r-- | src/parse/properties.c | 12 | ||||
-rw-r--r-- | src/utils/fpconstants.h | 20 | ||||
-rw-r--r-- | src/utils/fpmath.h | 2 |
3 files changed, 34 insertions, 0 deletions
diff --git a/src/parse/properties.c b/src/parse/properties.c index 7c81267..1c0c408 100644 --- a/src/parse/properties.c +++ b/src/parse/properties.c @@ -571,6 +571,18 @@ css_error parse_azimuth(css_language *c, if ((unit & UNIT_ANGLE) == false) return CSS_INVALID; + /* Valid angles lie between -360 and 360 degrees */ + if (unit == UNIT_DEG) { + if (length < FMULI(F_360, -1) || length > F_360) + return CSS_INVALID; + } else if (unit == UNIT_GRAD) { + if (length < FMULI(F_100, -1) || length > F_100) + return CSS_INVALID; + } else if (unit == UNIT_RAD) { + if (length < FMULI(F_2PI, -1) || length > F_2PI) + return CSS_INVALID; + } + value = AZIMUTH_ANGLE; } diff --git a/src/utils/fpconstants.h b/src/utils/fpconstants.h new file mode 100644 index 0000000..0718209 --- /dev/null +++ b/src/utils/fpconstants.h @@ -0,0 +1,20 @@ +/* + * This file is part of LibCSS. + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2008 John-Mark Bell <jmb@netsurf-browser.org> + */ + +#ifndef css_utils_fpconstants_h_ +#define css_utils_fpconstants_h_ + +/* Useful angles */ +#define F_PI 0x00000c91 /* 3.1415 (PI) */ +#define F_2PI 0x00001922 /* 2 PI */ + +#define F_360 0x0005a000 /* 360 */ + +#define F_100 0x00019000 /* 100 */ + +#endif + diff --git a/src/utils/fpmath.h b/src/utils/fpmath.h index edf6471..c4db605 100644 --- a/src/utils/fpmath.h +++ b/src/utils/fpmath.h @@ -41,5 +41,7 @@ typedef int32_t fixed; /* Convert a fixed point value to an integer */ #define FIXTOINT(a) ((a) >> 10) +#include "utils/fpconstants.h" + #endif |