summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2009-01-23 19:29:03 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2009-01-23 19:29:03 +0000
commitcc5c3f01c6958685130a9a037abaa4dd3df86b20 (patch)
treeada1f1aa398d95d87faa84aa4fd0f0c342a91492
parentddc5e14034a837142ee7a49059e3715ad30ab9d2 (diff)
downloadlibcss-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.c12
-rw-r--r--src/utils/fpconstants.h20
-rw-r--r--src/utils/fpmath.h2
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