diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2009-01-23 23:37:03 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2009-01-23 23:37:03 +0000 |
commit | fd2f9d71056f3647756f2bb81a40806e8cb6b52f (patch) | |
tree | bd3a68d088ac473126602e9c5489f46f18b5e99a | |
parent | c227f663b6285f9caa19df72baaeaa7d89cebfc7 (diff) | |
download | libcss-fd2f9d71056f3647756f2bb81a40806e8cb6b52f.tar.gz libcss-fd2f9d71056f3647756f2bb81a40806e8cb6b52f.tar.bz2 |
Range check elevation angle.
Add some more constants.
svn path=/trunk/libcss/; revision=6206
-rw-r--r-- | src/parse/properties.c | 12 | ||||
-rw-r--r-- | src/utils/fpconstants.h | 12 |
2 files changed, 22 insertions, 2 deletions
diff --git a/src/parse/properties.c b/src/parse/properties.c index ff7460a..80958ac 100644 --- a/src/parse/properties.c +++ b/src/parse/properties.c @@ -2485,6 +2485,18 @@ css_error parse_elevation(css_language *c, if ((unit & UNIT_ANGLE) == false) return CSS_INVALID; + /* Valid angles lie between -90 and 90 degrees */ + if (unit == UNIT_DEG) { + if (length < FMULI(F_90, -1) || length > F_90) + 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_PI_2, -1) || length > F_PI_2) + return CSS_INVALID; + } + value = ELEVATION_ANGLE; } diff --git a/src/utils/fpconstants.h b/src/utils/fpconstants.h index 297d418..b810274 100644 --- a/src/utils/fpconstants.h +++ b/src/utils/fpconstants.h @@ -9,12 +9,20 @@ #define css_utils_fpconstants_h_ /* Useful angles */ +#define F_PI_2 0x00000648 /* 1.5708 (PI/2) */ #define F_PI 0x00000c91 /* 3.1415 (PI) */ -#define F_2PI 0x00001922 /* 2 PI */ +#define F_3PI_2 0x000012d9 /* 4.7124 (3PI/2) */ +#define F_2PI 0x00001922 /* 6.2831 (2 PI) */ +#define F_90 0x00016800 /* 90 */ +#define F_180 0x0002d000 /* 180 */ +#define F_270 0x00043800 /* 270 */ #define F_360 0x0005a000 /* 360 */ -#define F_400 0x00064000 /* 100 */ +#define F_100 0x00019000 /* 100 */ +#define F_200 0x00032000 /* 200 */ +#define F_300 0x0004b000 /* 300 */ +#define F_400 0x00064000 /* 400 */ #endif |