Add type annotations to gallery/js/image_editor/filter.js.

BUG=433728
TEST=GYP_GENERATORS=ninja tools/gyp/gyp --depth . ui/file_manager/gallery/js/compiled_resources.gyp && ninja -C out/Default | grep "filter.js"

Review URL: https://codereview.chromium.org/758343002

Cr-Commit-Position: refs/heads/master@{#305787}
diff --git a/ui/file_manager/gallery/js/image_editor/filter.js b/ui/file_manager/gallery/js/image_editor/filter.js
index 87c0467..d2fbeda1 100644
--- a/ui/file_manager/gallery/js/image_editor/filter.js
+++ b/ui/file_manager/gallery/js/image_editor/filter.js
@@ -11,8 +11,8 @@
  * Create a filter from name and options.
  *
  * @param {string} name Maps to a filter method name.
- * @param {Object} options A map of filter-specific options.
- * @return {function(ImageData,ImageData,number,number)} created function.
+ * @param {!Object} options A map of filter-specific options.
+ * @return {function(!ImageData,!ImageData,number,number)} created function.
  */
 filter.create = function(name, options) {
   var filterFunc = filter[name](options);
@@ -30,8 +30,8 @@
  *
  * To be used with large images to avoid freezing up the UI.
  *
- * @param {HTMLCanvasElement} dstCanvas Destination canvas.
- * @param {HTMLCanvasElement} srcCanvas Source canvas.
+ * @param {!HTMLCanvasElement} dstCanvas Destination canvas.
+ * @param {!HTMLCanvasElement} srcCanvas Source canvas.
  * @param {function(ImageData,ImageData,number,number)} filterFunc Filter.
  * @param {function(number, number)} progressCallback Progress callback.
  * @param {number} maxPixelsPerStrip Pixel number to process at once.
@@ -81,8 +81,8 @@
 /**
  * Return a color histogram for an image.
  *
- * @param {HTMLCanvasElement|ImageData} source Image data to analyze.
- * @return {{r: Array.<number>, g: Array.<number>, b: Array.<number>}}
+ * @param {!(HTMLCanvasElement|ImageData)} source Image data to analyze.
+ * @return {{r: !Array.<number>, g: !Array.<number>, b: !Array.<number>}}
  *     histogram.
  */
 filter.getHistogram = function(source) {
@@ -124,7 +124,7 @@
  *
  * @param {number} maxArg Maximum argument value (inclusive).
  * @param {function(number): number} func Function to precompute.
- * @return {Uint8Array} Computed results.
+ * @return {!Uint8Array} Computed results.
  */
 filter.precompute = function(maxArg, func) {
   var results = new Uint8Array(maxArg + 1);
@@ -137,14 +137,14 @@
 /**
  * Convert pixels by applying conversion tables to each channel individually.
  *
- * @param {Array.<number>} rMap Red channel conversion table.
- * @param {Array.<number>} gMap Green channel conversion table.
- * @param {Array.<number>} bMap Blue channel conversion table.
- * @param {ImageData} dst Destination image data. Can be smaller than the
- *                        source, must completely fit inside the source.
- * @param {ImageData} src Source image data.
- * @param {number} offsetX Horizontal offset of dst relative to src.
- * @param {number} offsetY Vertical offset of dst relative to src.
+ * @param {!Uint8Array} rMap Red channel conversion table.
+ * @param {!Uint8Array} gMap Green channel conversion table.
+ * @param {!Uint8Array} bMap Blue channel conversion table.
+ * @param {!ImageData} dst Destination image data. Can be smaller than the
+ *     source, must completely fit inside the source.
+ * @param {!ImageData} src Source image data.
+ * @param {!number} offsetX Horizontal offset of dst relative to src.
+ * @param {!number} offsetY Vertical offset of dst relative to src.
  */
 filter.mapPixels = function(rMap, gMap, bMap, dst, src, offsetX, offsetY) {
   var dstData = dst.data;
@@ -175,12 +175,14 @@
 /**
  * Number of digits after period(in binary form) to preserve.
  * @type {number}
+ * @const
  */
 filter.FIXED_POINT_SHIFT = 16;
 
 /**
  * Maximum value that can be represented in fixed point without overflow.
  * @type {number}
+ * @const
  */
 filter.MAX_FLOAT_VALUE = 0x7FFFFFFF >> filter.FIXED_POINT_SHIFT;
 
@@ -204,10 +206,10 @@
  *  0 w2 w1 w2  0
  *  0  0 w3  0  0
  *
- * @param {Array.<number>} weights See the picture above.
- * @param {ImageData} dst Destination image data. Can be smaller than the
- *                        source, must completely fit inside the source.
- * @param {ImageData} src Source image data.
+ * @param {!Array.<number>} weights See the picture above.
+ * @param {!ImageData} dst Destination image data. Can be smaller than the
+ *     source, must completely fit inside the source.
+ * @param {!ImageData} src Source image data.
  * @param {number} offsetX Horizontal offset of dst relative to src.
  * @param {number} offsetY Vertical offset of dst relative to src.
  */
@@ -281,7 +283,7 @@
 /**
  * Compute the average color for the image.
  *
- * @param {ImageData} imageData Image data to analyze.
+ * @param {!ImageData} imageData Image data to analyze.
  * @return {{r: number, g: number, b: number}} average color.
  */
 filter.getAverageColor = function(imageData) {
@@ -309,7 +311,7 @@
 /**
  * Compute the average color with more weight given to pixes at the center.
  *
- * @param {ImageData} imageData Image data to analyze.
+ * @param {!ImageData} imageData Image data to analyze.
  * @return {{r: number, g: number, b: number}} weighted average color.
  */
 filter.getWeightedAverageColor = function(imageData) {
@@ -350,9 +352,9 @@
  * The copied part of src should completely fit into dst (there is no clipping
  * on either side).
  *
- * @param {Array.<number>} matrix 3x3 color matrix.
- * @param {ImageData} dst Destination image data.
- * @param {ImageData} src Source image data.
+ * @param {!Array.<number>} matrix 3x3 color matrix.
+ * @param {!ImageData} dst Destination image data.
+ * @param {!ImageData} src Source image data.
  * @param {number} offsetX X offset in source to start processing.
  * @param {number} offsetY Y offset in source to start processing.
  */
@@ -429,9 +431,9 @@
 /**
  * Return a convolution filter function bound to specific weights.
  *
- * @param {Array.<number>} weights Weights for the convolution matrix
- *                                 (not normalized).
- * @return {function(ImageData,ImageData,number,number)} Convolution filter.
+ * @param {!Array.<number>} weights Weights for the convolution matrix
+ *     (not normalized).
+ * @return {function(!ImageData,!ImageData,number,number)} Convolution filter.
  */
 filter.createConvolutionFilter = function(weights) {
   // Normalize the weights to sum to 1.
@@ -461,8 +463,8 @@
 
 /**
  * Creates matrix filter.
- * @param {Array.<number>} matrix Color transformation matrix.
- * @return {function(ImageData,ImageData,number,number)} Matrix filter.
+ * @param {!Array.<number>} matrix Color transformation matrix.
+ * @return {function(!ImageData,!ImageData,number,number)} Matrix filter.
  */
 filter.createColorMatrixFilter = function(matrix) {
   for (var r = 0; r != 3; r++) {
@@ -479,8 +481,8 @@
 
 /**
  * Return a blur filter.
- * @param {Object} options Blur options.
- * @return {function(ImageData,ImageData,number,number)} Blur filter.
+ * @param {{radius: number, strength: number}} options Blur options.
+ * @return {function(!ImageData,!ImageData,number,number)} Blur filter.
  */
 filter.blur = function(options) {
   if (options.radius == 1)
@@ -496,8 +498,8 @@
 
 /**
  * Return a sharpen filter.
- * @param {Object} options Sharpen options.
- * @return {function(ImageData,ImageData,number,number)} Sharpen filter.
+ * @param {{radius: number, strength: number}} options Sharpen options.
+ * @return {function(!ImageData,!ImageData,number,number)} Sharpen filter.
  */
 filter.sharpen = function(options) {
   if (options.radius == 1)
@@ -513,8 +515,8 @@
 
 /**
  * Return an exposure filter.
- * @param {Object} options exposure options.
- * @return {function(ImageData,ImageData,number,number)} Exposure filter.
+ * @param {{brightness: number, contrast: number}} options exposure options.
+ * @return {function(!ImageData,!ImageData,number,number)} Exposure filter.
  */
 filter.exposure = function(options) {
   var pixelMap = filter.precompute(
@@ -534,8 +536,10 @@
 
 /**
  * Return a color autofix filter.
- * @param {Object} options Histogram for autofix.
- * @return {function(ImageData,ImageData,number,number)} Autofix filter.
+ * @param {{histogram:
+ *     {r: !Array.<number>, g: !Array.<number>, b: !Array.<number>}}} options
+ *     Histogram for autofix.
+ * @return {function(!ImageData,!ImageData,number,number)} Autofix filter.
  */
 filter.autofix = function(options) {
   return filter.mapPixels.bind(null,
@@ -547,8 +551,8 @@
 /**
  * Return a conversion table that stretches the range of colors used
  * in the image to 0..255.
- * @param {Array.<number>} channelHistogram Histogram to calculate range.
- * @return {Uint8Array} Color mapping array.
+ * @param {!Array.<number>} channelHistogram Histogram to calculate range.
+ * @return {!Uint8Array} Color mapping array.
  */
 filter.autofix.stretchColors = function(channelHistogram) {
   var range = filter.autofix.getRange(channelHistogram);
@@ -562,7 +566,7 @@
 
 /**
  * Return a range that encloses non-zero elements values in a histogram array.
- * @param {Array.<number>} channelHistogram Histogram to analyze.
+ * @param {!Array.<number>} channelHistogram Histogram to analyze.
  * @return {{first: number, last: number}} Channel range in histogram.
  */
 filter.autofix.getRange = function(channelHistogram) {
@@ -585,11 +589,12 @@
  * offset is less than SENSITIVITY, probably autofix is not needed.
  * Reasonable empirical value.
  * @type {number}
+ * @const
  */
 filter.autofix.SENSITIVITY = 8;
 
 /**
- * @param {Array.<number>} channelHistogram Histogram to analyze.
+ * @param {!Array.<number>} channelHistogram Histogram to analyze.
  * @return {boolean} True if stretching this range to 0..255 would make
  *                   a visible difference.
  */
@@ -600,7 +605,8 @@
 };
 
 /**
- * @param {{r: Array.<number>, g: Array.<number>, b: Array.<number>}} histogram
+ * @param {{r: !Array.<number>, g: !Array.<number>, b: !Array.<number>}}
+ *     histogram
  * @return {boolean} True if the autofix would make a visible difference.
  */
 filter.autofix.isApplicable = function(histogram) {