Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1187)

Unified Diff: ui/accessibility/extensions/colorenhancer/src/cvd.js

Issue 1156303011: Fix Color Enhancer global scopes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | ui/accessibility/extensions/colorenhancer/src/popup.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/accessibility/extensions/colorenhancer/src/cvd.js
diff --git a/ui/accessibility/extensions/colorenhancer/src/cvd.js b/ui/accessibility/extensions/colorenhancer/src/cvd.js
index 7b12e3e3401cb58336a303243085afa6d7582928..1bf7daa6ca3dbfd3bc5a873f40a8cb0c220ed76c 100644
--- a/ui/accessibility/extensions/colorenhancer/src/cvd.js
+++ b/ui/accessibility/extensions/colorenhancer/src/cvd.js
@@ -2,448 +2,446 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// ======= Global state =======
-var curDelta = 0;
-var curSeverity = 0;
-var curType = 'PROTANOMALY';
-var curSimulate = false;
-var curEnable = false;
-var curFilter = 0;
+/**
+ * Global exports. Used by popup to show effect of filter during setup.
+ */
+(function(exports) {
+ var curDelta = 0;
+ var curSeverity = 0;
+ var curType = 'PROTANOMALY';
+ var curSimulate = false;
+ var curEnable = false;
+ var curFilter = 0;
-// ======= 3x3 matrix ops =======
+ // ======= 3x3 matrix ops =======
-/**
- * The 3x3 identity matrix.
- * @const {object}
- */
-var IDENTITY_MATRIX_3x3 = [
- [1, 0, 0],
- [0, 1, 0],
- [0, 0, 1]
-];
+ /**
+ * The 3x3 identity matrix.
+ * @const {object}
+ */
+ var IDENTITY_MATRIX_3x3 = [
+ [1, 0, 0],
+ [0, 1, 0],
+ [0, 0, 1]
+ ];
-/**
- * Adds two matrices.
- * @param {!object} m1 A 3x3 matrix.
- * @param {!object} m2 A 3x3 matrix.
- * @return {!object} The 3x3 matrix m1 + m2.
- */
-function add3x3(m1, m2) {
- var result = [];
- for (var i = 0; i < 3; i++) {
- result[i] = [];
- for (var j = 0; j < 3; j++) {
- result[i].push(m1[i][j] + m2[i][j]);
+ /**
+ * Adds two matrices.
+ * @param {!object} m1 A 3x3 matrix.
+ * @param {!object} m2 A 3x3 matrix.
+ * @return {!object} The 3x3 matrix m1 + m2.
+ */
+ function add3x3(m1, m2) {
+ var result = [];
+ for (var i = 0; i < 3; i++) {
+ result[i] = [];
+ for (var j = 0; j < 3; j++) {
+ result[i].push(m1[i][j] + m2[i][j]);
+ }
}
+ return result;
}
- return result;
-}
-/**
- * Subtracts one matrix from another.
- * @param {!object} m1 A 3x3 matrix.
- * @param {!object} m2 A 3x3 matrix.
- * @return {!object} The 3x3 matrix m1 - m2.
- */
-function sub3x3(m1, m2) {
- var result = [];
- for (var i = 0; i < 3; i++) {
- result[i] = [];
- for (var j = 0; j < 3; j++) {
- result[i].push(m1[i][j] - m2[i][j]);
+ /**
+ * Subtracts one matrix from another.
+ * @param {!object} m1 A 3x3 matrix.
+ * @param {!object} m2 A 3x3 matrix.
+ * @return {!object} The 3x3 matrix m1 - m2.
+ */
+ function sub3x3(m1, m2) {
+ var result = [];
+ for (var i = 0; i < 3; i++) {
+ result[i] = [];
+ for (var j = 0; j < 3; j++) {
+ result[i].push(m1[i][j] - m2[i][j]);
+ }
}
+ return result;
}
- return result;
-}
-/**
- * Multiplies one matrix with another.
- * @param {!object} m1 A 3x3 matrix.
- * @param {!object} m2 A 3x3 matrix.
- * @return {!object} The 3x3 matrix m1 * m2.
- */
-function mul3x3(m1, m2) {
- var result = [];
- for (var i = 0; i < 3; i++) {
- result[i] = [];
- for (var j = 0; j < 3; j++) {
- var sum = 0;
- for (var k = 0; k < 3; k++) {
- sum += m1[i][k] * m2[k][j];
+ /**
+ * Multiplies one matrix with another.
+ * @param {!object} m1 A 3x3 matrix.
+ * @param {!object} m2 A 3x3 matrix.
+ * @return {!object} The 3x3 matrix m1 * m2.
+ */
+ function mul3x3(m1, m2) {
+ var result = [];
+ for (var i = 0; i < 3; i++) {
+ result[i] = [];
+ for (var j = 0; j < 3; j++) {
+ var sum = 0;
+ for (var k = 0; k < 3; k++) {
+ sum += m1[i][k] * m2[k][j];
+ }
+ result[i].push(sum);
}
- result[i].push(sum);
}
+ return result;
}
- return result;
-}
-/**
- * Multiplies a matrix with a number.
- * @param {!object} m A 3x3 matrix.
- * @param {!number} k A scalar multiplier.
- * @return {!object} The 3x3 matrix m * k.
- */
-function mul3x3Scalar(m, k) {
- var result = [];
- for (var i = 0; i < 3; i++) {
- result[i] = [];
- for (var j = 0; j < 3; j++) {
- result[i].push(k * m[i][j]);
+ /**
+ * Multiplies a matrix with a number.
+ * @param {!object} m A 3x3 matrix.
+ * @param {!number} k A scalar multiplier.
+ * @return {!object} The 3x3 matrix m * k.
+ */
+ function mul3x3Scalar(m, k) {
+ var result = [];
+ for (var i = 0; i < 3; i++) {
+ result[i] = [];
+ for (var j = 0; j < 3; j++) {
+ result[i].push(k * m[i][j]);
+ }
}
+ return result;
}
- return result;
-}
-// ======= 3x3 matrix utils =======
+ // ======= 3x3 matrix utils =======
-/**
- * Makes the SVG matrix string (of 20 values) for a given matrix.
- * @param {!object} m A 3x3 matrix.
- * @return {!string} The SVG matrix string for m.
- */
-function svgMatrixStringFrom3x3(m) {
- var outputRows = [];
- for (var i = 0; i < 3; i++) {
- outputRows.push(m[i].join(' ') + ' 0 0');
+ /**
+ * Makes the SVG matrix string (of 20 values) for a given matrix.
+ * @param {!object} m A 3x3 matrix.
+ * @return {!string} The SVG matrix string for m.
+ */
+ function svgMatrixStringFrom3x3(m) {
+ var outputRows = [];
+ for (var i = 0; i < 3; i++) {
+ outputRows.push(m[i].join(' ') + ' 0 0');
+ }
+ // Add the alpha row
+ outputRows.push('0 0 0 1 0');
+ return outputRows.join(' ');
}
- // Add the alpha row
- outputRows.push('0 0 0 1 0');
- return outputRows.join(' ');
-}
-/**
- * Makes a human readable string for a given matrix.
- * @param {!object} m A 3x3 matrix.
- * @return {!string} A human-readable string for m.
- */
-function humanReadbleStringFrom3x3(m) {
- var result = '';
- for (var i = 0; i < 3; i++) {
- result += (i ? ', ' : '') + '[';
- for (var j = 0; j < 3; j++) {
- result += (j ? ', ' : '') + m[i][j].toFixed(2);
- }
- result += ']';
- }
- return result;
-}
+ /**
+ * Makes a human readable string for a given matrix.
+ * @param {!object} m A 3x3 matrix.
+ * @return {!string} A human-readable string for m.
+ */
+ function humanReadbleStringFrom3x3(m) {
+ var result = '';
+ for (var i = 0; i < 3; i++) {
+ result += (i ? ', ' : '') + '[';
+ for (var j = 0; j < 3; j++) {
+ result += (j ? ', ' : '') + m[i][j].toFixed(2);
+ }
+ result += ']';
+ }
+ return result;
+ }
-// ======= CVD parameters =======
-/**
- * Parameters for simulating color vision deficiency.
- * Source:
- * http://www.inf.ufrgs.br/~oliveira/pubs_files/CVD_Simulation/CVD_Simulation.html
- * Original Research Paper:
- * http://www.inf.ufrgs.br/~oliveira/pubs_files/CVD_Simulation/Machado_Oliveira_Fernandes_CVD_Vis2009_final.pdf
- *
- * @enum {string}
- */
-var cvdSimulationParams = {
- PROTANOMALY: [
- [0.4720, -1.2946, 0.9857],
- [-0.6128, 1.6326, 0.0187],
- [0.1407, -0.3380, -0.0044],
- [-0.1420, 0.2488, 0.0044],
- [0.1872, -0.3908, 0.9942],
- [-0.0451, 0.1420, 0.0013],
- [0.0222, -0.0253, -0.0004],
- [-0.0290, -0.0201, 0.0006],
- [0.0068, 0.0454, 0.9990]
- ],
- DEUTERANOMALY: [
- [0.5442, -1.1454, 0.9818],
- [-0.7091, 1.5287, 0.0238],
- [0.1650, -0.3833, -0.0055],
- [-0.1664, 0.4368, 0.0056],
- [0.2178, -0.5327, 0.9927],
- [-0.0514, 0.0958, 0.0017],
- [0.0180, -0.0288, -0.0006],
- [-0.0232, -0.0649, 0.0007],
- [0.0052, 0.0360, 0.9998]
- ],
- TRITANOMALY: [
- [0.4275, -0.0181, 0.9307],
- [-0.2454, 0.0013, 0.0827],
- [-0.1821, 0.0168, -0.0134],
- [-0.1280, 0.0047, 0.0202],
- [0.0233, -0.0398, 0.9728],
- [0.1048, 0.0352, 0.0070],
- [-0.0156, 0.0061, 0.0071],
- [0.3841, 0.2947, 0.0151],
- [-0.3685, -0.3008, 0.9778]
- ]
-};
-
-
-// TODO(mustaq): This should be nuked, see getCvdCorrectionMatrix().
-var cvdCorrectionParams = {
- PROTANOMALY: {
- addendum: [
- [0.0, 0.0, 0.0],
- [0.7, 1.0, 0.0],
- [0.7, 0.0, 1.0]
- ],
- delta_factor: [
- [0.0, 0.0, 0.0],
- [0.3, 0.0, 0.0],
- [-0.3, 0.0, 0.0]
- ]
- },
- DEUTERANOMALY: {
- addendum: [
- [0.0, 0.0, 0.0],
- [0.7, 1.0, 0.0],
- [0.7, 0.0, 1.0]
+ // ======= CVD parameters =======
+ /**
+ * Parameters for simulating color vision deficiency.
+ * Source:
+ * http://www.inf.ufrgs.br/~oliveira/pubs_files/CVD_Simulation/CVD_Simulation.html
+ * Original Research Paper:
+ * http://www.inf.ufrgs.br/~oliveira/pubs_files/CVD_Simulation/Machado_Oliveira_Fernandes_CVD_Vis2009_final.pdf
+ *
+ * @enum {string}
+ */
+ var cvdSimulationParams = {
+ PROTANOMALY: [
+ [0.4720, -1.2946, 0.9857],
+ [-0.6128, 1.6326, 0.0187],
+ [0.1407, -0.3380, -0.0044],
+ [-0.1420, 0.2488, 0.0044],
+ [0.1872, -0.3908, 0.9942],
+ [-0.0451, 0.1420, 0.0013],
+ [0.0222, -0.0253, -0.0004],
+ [-0.0290, -0.0201, 0.0006],
+ [0.0068, 0.0454, 0.9990]
],
- delta_factor: [
- [0.0, 0.0, 0.0],
- [0.3, 0.0, 0.0],
- [-0.3, 0.0, 0.0]
- ]
- },
- TRITANOMALY: {
- addendum: [
- [1.0, 0.0, 0.7],
- [0.0, 1.0, 0.7],
- [0.0, 0.0, 0.0]
+ DEUTERANOMALY: [
+ [0.5442, -1.1454, 0.9818],
+ [-0.7091, 1.5287, 0.0238],
+ [0.1650, -0.3833, -0.0055],
+ [-0.1664, 0.4368, 0.0056],
+ [0.2178, -0.5327, 0.9927],
+ [-0.0514, 0.0958, 0.0017],
+ [0.0180, -0.0288, -0.0006],
+ [-0.0232, -0.0649, 0.0007],
+ [0.0052, 0.0360, 0.9998]
],
- delta_factor: [
- [0.0, 0.0, 0.3],
- [0.0, 0.0, -0.3],
- [0.0, 0.0, 0.0]
+ TRITANOMALY: [
+ [0.4275, -0.0181, 0.9307],
+ [-0.2454, 0.0013, 0.0827],
+ [-0.1821, 0.0168, -0.0134],
+ [-0.1280, 0.0047, 0.0202],
+ [0.0233, -0.0398, 0.9728],
+ [0.1048, 0.0352, 0.0070],
+ [-0.0156, 0.0061, 0.0071],
+ [0.3841, 0.2947, 0.0151],
+ [-0.3685, -0.3008, 0.9778]
]
- }
-};
+ };
-// ======= CVD matrix builders =======
+ // TODO(mustaq): This should be nuked, see getCvdCorrectionMatrix().
+ var cvdCorrectionParams = {
+ PROTANOMALY: {
+ addendum: [
+ [0.0, 0.0, 0.0],
+ [0.7, 1.0, 0.0],
+ [0.7, 0.0, 1.0]
+ ],
+ delta_factor: [
+ [0.0, 0.0, 0.0],
+ [0.3, 0.0, 0.0],
+ [-0.3, 0.0, 0.0]
+ ]
+ },
+ DEUTERANOMALY: {
+ addendum: [
+ [0.0, 0.0, 0.0],
+ [0.7, 1.0, 0.0],
+ [0.7, 0.0, 1.0]
+ ],
+ delta_factor: [
+ [0.0, 0.0, 0.0],
+ [0.3, 0.0, 0.0],
+ [-0.3, 0.0, 0.0]
+ ]
+ },
+ TRITANOMALY: {
+ addendum: [
+ [1.0, 0.0, 0.7],
+ [0.0, 1.0, 0.7],
+ [0.0, 0.0, 0.0]
+ ],
+ delta_factor: [
+ [0.0, 0.0, 0.3],
+ [0.0, 0.0, -0.3],
+ [0.0, 0.0, 0.0]
+ ]
+ }
+ };
-/**
- * Returns a 3x3 matrix for simulating the given type of CVD with the given
- * severity.
- * @param {string} cvdType Type of CVD, either "PROTANOMALY" or "DEUTERANOMALY"
- * or "TRITANOMALY".
- * @param {number} severity A real number in [0,1] denoting severity.
- */
-function getCvdSimulationMatrix(cvdType, severity) {
- var cvdSimulationParam = cvdSimulationParams[cvdType];
- var severity2 = severity * severity;
- var matrix = [];
- for (var i = 0; i < 3; i++) {
- var row = [];
- for (var j = 0; j < 3; j++) {
- var paramRow = i*3+j;
- var val = cvdSimulationParam[paramRow][0] * severity2
- + cvdSimulationParam[paramRow][1] * severity
- + cvdSimulationParam[paramRow][2];
- row.push(val);
+
+ // ======= CVD matrix builders =======
+
+ /**
+ * Returns a 3x3 matrix for simulating the given type of CVD with the given
+ * severity.
+ * @param {string} cvdType Type of CVD, either "PROTANOMALY" or
+ * "DEUTERANOMALY" or "TRITANOMALY".
+ * @param {number} severity A real number in [0,1] denoting severity.
+ */
+ function getCvdSimulationMatrix(cvdType, severity) {
+ var cvdSimulationParam = cvdSimulationParams[cvdType];
+ var severity2 = severity * severity;
+ var matrix = [];
+ for (var i = 0; i < 3; i++) {
+ var row = [];
+ for (var j = 0; j < 3; j++) {
+ var paramRow = i*3+j;
+ var val = cvdSimulationParam[paramRow][0] * severity2
+ + cvdSimulationParam[paramRow][1] * severity
+ + cvdSimulationParam[paramRow][2];
+ row.push(val);
+ }
+ matrix.push(row);
}
- matrix.push(row);
+ return matrix;
}
- return matrix;
-}
-/**
- * Returns a 3x3 matrix for correcting the given type of CVD using the given
- * color adjustment.
- * @param {string} cvdType Type of CVD, either "PROTANOMALY" or "DEUTERANOMALY"
- * or "TRITANOMALY".
- * @param {number} delta A real number in [0,1] denoting color adjustment.
- */
-function getCvdCorrectionMatrix(cvdType, delta) {
- cvdCorrectionParam = cvdCorrectionParams[cvdType];
- // TODO(mustaq): Perhaps nuke full-matrix operations after experiment.
- return add3x3(cvdCorrectionParam['addendum'],
- mul3x3Scalar(cvdCorrectionParam['delta_factor'], delta));
-}
+ /**
+ * Returns a 3x3 matrix for correcting the given type of CVD using the given
+ * color adjustment.
+ * @param {string} cvdType Type of CVD, either "PROTANOMALY" or
+ * "DEUTERANOMALY" or "TRITANOMALY".
+ * @param {number} delta A real number in [0,1] denoting color adjustment.
+ */
+ function getCvdCorrectionMatrix(cvdType, delta) {
+ cvdCorrectionParam = cvdCorrectionParams[cvdType];
+ // TODO(mustaq): Perhaps nuke full-matrix operations after experiment.
+ return add3x3(cvdCorrectionParam['addendum'],
+ mul3x3Scalar(cvdCorrectionParam['delta_factor'], delta));
+ }
-/**
- * Returns the 3x3 matrix to be used for the given settings.
- * @param {string} cvdType Type of CVD, either "PROTANOMALY" or "DEUTERANOMALY"
- * or "TRITANOMALY".
- * @param {number} severity A real number in [0,1] denoting severity.
- * @param {number} delta A real number in [0,1] denoting color adjustment.
- * @param {boolean} simulate Whether to simulate the CVD type.
- * @param {boolean} enable Whether to enable color filtering.
- */
-function getEffectiveCvdMatrix(cvdType, severity, delta, simulate, enable) {
- if (!enable) {
- //TODO(mustaq): we should remove matrices at the svg level
- return IDENTITY_MATRIX_3x3;
- }
+ /**
+ * Returns the 3x3 matrix to be used for the given settings.
+ * @param {string} cvdType Type of CVD, either "PROTANOMALY" or
+ * "DEUTERANOMALY" or "TRITANOMALY".
+ * @param {number} severity A real number in [0,1] denoting severity.
+ * @param {number} delta A real number in [0,1] denoting color adjustment.
+ * @param {boolean} simulate Whether to simulate the CVD type.
+ * @param {boolean} enable Whether to enable color filtering.
+ */
+ function getEffectiveCvdMatrix(cvdType, severity, delta, simulate, enable) {
+ if (!enable) {
+ //TODO(mustaq): we should remove matrices at the svg level
+ return IDENTITY_MATRIX_3x3;
+ }
- var effectiveMatrix = getCvdSimulationMatrix(cvdType, severity);
+ var effectiveMatrix = getCvdSimulationMatrix(cvdType, severity);
- if (!simulate) {
- var cvdCorrectionMatrix = getCvdCorrectionMatrix(cvdType, delta);
- var tmpProduct = mul3x3(cvdCorrectionMatrix, effectiveMatrix);
+ if (!simulate) {
+ var cvdCorrectionMatrix = getCvdCorrectionMatrix(cvdType, delta);
+ var tmpProduct = mul3x3(cvdCorrectionMatrix, effectiveMatrix);
+
+ effectiveMatrix = sub3x3(
+ add3x3(IDENTITY_MATRIX_3x3, cvdCorrectionMatrix),
+ tmpProduct);
+ }
- effectiveMatrix = sub3x3(
- add3x3(IDENTITY_MATRIX_3x3, cvdCorrectionMatrix),
- tmpProduct);
+ return effectiveMatrix;
}
- return effectiveMatrix;
-}
-
-
-// ======= Page linker =======
-
-/** @const {string} */
-var SVG_DEFAULT_MATRIX =
- '1 0 0 0 0 ' +
- '0 1 0 0 0 ' +
- '0 0 1 0 0 ' +
- '0 0 0 1 0';
-
-var svgContent =
- '<svg xmlns="http://www.w3.org/2000/svg" version="1.1">' +
- ' <defs>' +
- ' <filter id="cvd_extension_0">' +
- ' <feColorMatrix id="cvd_matrix_0" type="matrix" values="' +
- SVG_DEFAULT_MATRIX + '"/>' +
- ' </filter>' +
- ' <filter id="cvd_extension_1">' +
- ' <feColorMatrix id="cvd_matrix_1" type="matrix" values="' +
- SVG_DEFAULT_MATRIX + '"/>' +
- ' </filter>' +
- ' </defs>' +
- '</svg>';
-/**
- * Checks for svg filter matrix presence and append to DOM if not present.
- */
-function addSvgIfMissing() {
- var wrap = document.getElementById('cvd_extension_svg_filter');
- if (!wrap) {
- wrap = document.createElement('span');
- wrap.id = 'cvd_extension_svg_filter';
- wrap.setAttribute('hidden', '');
- wrap.innerHTML = svgContent;
- document.body.appendChild(wrap);
- }
-}
+ // ======= Page linker =======
+
+ /** @const {string} */
+ var SVG_DEFAULT_MATRIX =
+ '1 0 0 0 0 ' +
+ '0 1 0 0 0 ' +
+ '0 0 1 0 0 ' +
+ '0 0 0 1 0';
+
+ var svgContent =
+ '<svg xmlns="http://www.w3.org/2000/svg" version="1.1">' +
+ ' <defs>' +
+ ' <filter id="cvd_extension_0">' +
+ ' <feColorMatrix id="cvd_matrix_0" type="matrix" values="' +
+ SVG_DEFAULT_MATRIX + '"/>' +
+ ' </filter>' +
+ ' <filter id="cvd_extension_1">' +
+ ' <feColorMatrix id="cvd_matrix_1" type="matrix" values="' +
+ SVG_DEFAULT_MATRIX + '"/>' +
+ ' </filter>' +
+ ' </defs>' +
+ '</svg>';
-/**
- * Updates the SVG filter based on the RGB correction/simulation matrix.
- * @param {!Object} matrix 3x3 RGB transformation matrix.
- */
-function setFilter(matrix) {
- addSvgIfMissing();
- var next = 1 - curFilter;
+ /**
+ * Checks for svg filter matrix presence and append to DOM if not present.
+ */
+ function addSvgIfMissing() {
+ var wrap = document.getElementById('cvd_extension_svg_filter');
+ if (!wrap) {
+ wrap = document.createElement('span');
+ wrap.id = 'cvd_extension_svg_filter';
+ wrap.setAttribute('hidden', '');
+ wrap.innerHTML = svgContent;
+ document.body.appendChild(wrap);
+ }
+ }
- debugPrint('update: matrix#' + next + '=' +
- humanReadbleStringFrom3x3(matrix));
+ /**
+ * Updates the SVG filter based on the RGB correction/simulation matrix.
+ * @param {!Object} matrix 3x3 RGB transformation matrix.
+ */
+ function setFilter(matrix) {
+ addSvgIfMissing();
+ var next = 1 - curFilter;
- var matrixElem = document.getElementById('cvd_matrix_' + next);
- matrixElem.setAttribute('values', svgMatrixStringFrom3x3(matrix));
+ debugPrint('update: matrix#' + next + '=' +
+ humanReadbleStringFrom3x3(matrix));
- var html = document.documentElement;
- html.classList.remove('filter' + curFilter);
- html.classList.add('filter' + next);
+ var matrixElem = document.getElementById('cvd_matrix_' + next);
+ matrixElem.setAttribute('values', svgMatrixStringFrom3x3(matrix));
- curFilter = next;
-}
+ var html = document.documentElement;
+ html.classList.remove('filter' + curFilter);
+ html.classList.add('filter' + next);
-/**
- * Updates the SVG matrix using the current settings.
- */
-function update() {
- if (!document.body) {
- document.addEventListener('DOMContentLoaded', update);
- return;
+ curFilter = next;
}
- var effectiveMatrix = getEffectiveCvdMatrix(
- curType, curSeverity, curDelta * 2 - 1, curSimulate, curEnable);
+ /**
+ * Updates the SVG matrix using the current settings.
+ */
+ function update() {
+ if (!document.body) {
+ document.addEventListener('DOMContentLoaded', update);
+ return;
+ }
- setFilter(effectiveMatrix);
+ var effectiveMatrix = getEffectiveCvdMatrix(
+ curType, curSeverity, curDelta * 2 - 1, curSimulate, curEnable);
- // TODO(wnwen): Figure out whether this hack is still necessary.
- // TODO(kevers): Check if a call to getComputedStyle is sufficient to force an
- // update.
- window.scrollBy(0, 1);
- window.scrollBy(0, -1);
-}
+ setFilter(effectiveMatrix);
+ // TODO(kevers): Check if a call to getComputedStyle is sufficient to force
+ // an update.
+ window.scrollBy(0, 1);
+ window.scrollBy(0, -1);
+ }
-/**
- * Process request from background page.
- * @param {!object} request An object containing color filter parameters.
- */
-function onExtensionMessage(request) {
- debugPrint('onExtensionMessage: ' + JSON.stringify(request));
- var changed = false;
-
- if (request['type'] !== undefined) {
- var type = request.type;
- if (curType != type) {
- curType = type;
- changed = true;
+
+ /**
+ * Process request from background page.
+ * @param {!object} request An object containing color filter parameters.
+ */
+ function onExtensionMessage(request) {
+ debugPrint('onExtensionMessage: ' + JSON.stringify(request));
+ var changed = false;
+
+ if (request['type'] !== undefined) {
+ var type = request.type;
+ if (curType != type) {
+ curType = type;
+ changed = true;
+ }
}
- }
- if (request['severity'] !== undefined) {
- var severity = request.severity;
- if (curSeverity != severity) {
- curSeverity = severity;
- changed = true;
+ if (request['severity'] !== undefined) {
+ var severity = request.severity;
+ if (curSeverity != severity) {
+ curSeverity = severity;
+ changed = true;
+ }
}
- }
- if (request['delta'] !== undefined) {
- var delta = request.delta;
- if (curDelta != delta) {
- curDelta = delta;
- changed = true;
+ if (request['delta'] !== undefined) {
+ var delta = request.delta;
+ if (curDelta != delta) {
+ curDelta = delta;
+ changed = true;
+ }
}
- }
- if (request['simulate'] !== undefined) {
- var simulate = request.simulate;
- if (curSimulate != simulate) {
- curSimulate = simulate;
- changed = true;
+ if (request['simulate'] !== undefined) {
+ var simulate = request.simulate;
+ if (curSimulate != simulate) {
+ curSimulate = simulate;
+ changed = true;
+ }
}
- }
- if (request['enable'] !== undefined) {
- var enable = request.enable;
- if (curEnable != enable) {
- curEnable = enable;
- changed = true;
+ if (request['enable'] !== undefined) {
+ var enable = request.enable;
+ if (curEnable != enable) {
+ curEnable = enable;
+ changed = true;
+ }
}
- }
- if (changed)
- update();
-}
+ if (changed)
+ update();
+ }
-/**
- * Prepare to process background messages and let it know to send initial
- * values.
- */
-(function initialize() {
- chrome.extension.onRequest.addListener(onExtensionMessage);
- chrome.extension.sendRequest({'init': true}, onExtensionMessage);
-})();
+ /**
+ * Prepare to process background messages and let it know to send initial
+ * values.
+ */
+ exports.initializeExtension = function () {
+ chrome.extension.onRequest.addListener(onExtensionMessage);
+ chrome.extension.sendRequest({'init': true}, onExtensionMessage);
+ };
-/**
- * Global exports. Used by popup to show effect of filter during setup.
- */
-(function(exports) {
/**
* Generate SVG filter for color enhancement based on type and severity using
* default color adjustment.
@@ -472,3 +470,5 @@ function onExtensionMessage(request) {
html.classList.remove('filter1');
};
})(this);
+
+this.initializeExtension();
« no previous file with comments | « no previous file | ui/accessibility/extensions/colorenhancer/src/popup.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698