aboutsummaryrefslogtreecommitdiff
path: root/guidelines/WCAG-1.0/guideline-2.js
diff options
context:
space:
mode:
authorGravatar Trevor Elliott <trevor@galois.com>2013-06-26 10:50:51 -0700
committerGravatar Trevor Elliott <trevor@galois.com>2013-06-26 10:50:51 -0700
commit9c27c7e281a54e8819d256b7ac054f77cf957631 (patch)
treecd899cc91d57b3315ae08f86fa2241a1b63b87ce /guidelines/WCAG-1.0/guideline-2.js
parent83fd5d7eac15eda9ffcedf1d60dfeeadc722e24c (diff)
Rename the accessibility directory
* Accessibility was too general, these were only WCAG-1.0
Diffstat (limited to 'guidelines/WCAG-1.0/guideline-2.js')
-rw-r--r--guidelines/WCAG-1.0/guideline-2.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/guidelines/WCAG-1.0/guideline-2.js b/guidelines/WCAG-1.0/guideline-2.js
new file mode 100644
index 0000000..7dcf28d
--- /dev/null
+++ b/guidelines/WCAG-1.0/guideline-2.js
@@ -0,0 +1,43 @@
+exports.name = "colorDifference";
+exports.description = "Elements should provide sufficient color difference";
+exports.rule = function(report) {
+
+ /* Checkpoint 2.1 ***********************************************************/
+
+ // TODO: not sure about the best way to test that information isn't hidden
+ // when colors go away.
+
+
+ /* Checkpoint 2.2 ***********************************************************/
+
+ var fc = fiveui.color;
+ var MIN_COLOR_DIFF = 500; // http://www.w3.org/TR/2000/WD-AERT-20000426#color
+
+ /**
+ * Return the absolute "color difference" between two * given RGB color
+ * objects.
+ * Input is two RGB color objects.
+ */
+ var colorDiff = function (c1, c2) {
+ return Math.abs(c1.r - c2.r) +
+ Math.abs(c1.g - c2.g) +
+ Math.abs(c1.b - c2.b);
+ };
+
+ fiveui.query('*')
+ .filter(function () { // filter for lowest level elts having non-empty text
+ var $this = $(this);
+ return $this.children().length == 0 && $.trim($this.text()).length > 0;
+ })
+ .each(function (i) {
+ // TODO take into account fg alpha values
+ var fg = fc.colorToRGB($(this).css('color'));
+ var bg = fc.findBGColor($(this));
+ if (fg && bg) {
+ var diff = colorDiff(fg, bg);
+ if (diff < MIN_COLOR_DIFF) {
+ report.error('Element has poor color difference: ' + diff, this);
+ }
+ }
+ });
+};