Index: chrome/browser/resources/print_preview/margin_utils.js |
diff --git a/chrome/browser/resources/print_preview/margin_utils.js b/chrome/browser/resources/print_preview/margin_utils.js |
index 73a925a3cf15a673c74abcfad04f92b78ecd434f..e217857ffa030b4224f3565a041def442d163b50 100644 |
--- a/chrome/browser/resources/print_preview/margin_utils.js |
+++ b/chrome/browser/resources/print_preview/margin_utils.js |
@@ -30,19 +30,70 @@ cr.define('print_preview', function() { |
return -1; |
} |
+ var marginValidationStates = { |
+ TOO_SMALL: 0, |
+ WITHIN_RANGE: 1, |
+ TOO_BIG: 2, |
+ NOT_A_NUMBER: 3 |
+ } |
+ |
+ /** |
+ * Checks whether |value| is within range [0, limit]. |
+ * @return {number} An appropriate value from enum |marginValidationStates|. |
+ */ |
+ function validateMarginValue(value, limit) { |
+ if (value <= limit && value >= 0) |
+ return marginValidationStates.WITHIN_RANGE; |
+ else if (value < 0) |
+ return marginValidationStates.TOO_SMALL; |
+ else (value > limit) |
+ return marginValidationStates.TOO_BIG; |
+ } |
+ |
/** |
* @param {sting} text The text to check (in inches). |
* @param {number} limit The upper bound of the valid margin range (in |
* points). |
- * @return {boolean} True of |text| can be parsed and it is within the allowed |
- * range. |
+ * @return {number} An appropriate value from enum |marginValidationStates|. |
*/ |
- function isMarginTextValid(text, limit) { |
+ function validateMarginText(text, limit) { |
var value = extractMarginValue(text); |
- if (value == -1) |
- return false; |
+ if (value == -1) |
+ return marginValidationStates.NOT_A_NUMBER; |
value = convertInchesToPoints(value); |
- return value <= limit; |
+ return validateMarginValue(value, limit); |
+ } |
+ |
+ /** |
+ * @param {number} toConvert The value to convert in points |
+ * @return {string} The equivalent text in inches. |
+ */ |
+ function convertPointsToInchesText(toConvert) { |
+ var inInches = convertPointsToInches(toConvert); |
+ return convertInchesToInchesText(inInches); |
+ } |
+ |
+ /** |
+ * @param {number} toConvert The value to convert in inches. |
+ * @return {string} The equivalent text in inches with precision of two |
+ * digits. |
+ */ |
+ function convertInchesToInchesText(toConvert) { |
+ return toConvert.toFixed(2) + '"'; |
+ } |
+ |
+ /** |
+ * Converts |value| to inches text (keeping 2 decimal digits) and then back to |
+ * points. Note: Because of the precision the return value might be different |
+ * than |value|. |
+ * @param {number} value The value in points to convert. |
+ * @return {number} The value in points after converting to inches with a |
+ * certain precision and back. |
+ */ |
+ function convertPointsToInchesTextAndBack(value) { |
+ var text = convertPointsToInchesText(value); |
+ var inches = extractMarginValue(text); |
+ return convertInchesToPoints(inches); |
} |
/** |
@@ -62,26 +113,37 @@ cr.define('print_preview', function() { |
}; |
Rect.prototype = { |
+ /** |
+ * @type {number} The x coordinate of the right-most point. |
+ */ |
get right() { |
return this.x + this.width; |
}, |
+ /** |
+ * @type {number} The y coordinate of the lower-most point. |
+ */ |
get bottom() { |
return this.y + this.height; |
}, |
- get middleX() { |
- return this.x + this.width / 2; |
- }, |
- |
- get middleY() { |
- return this.y + this.height / 2; |
+ /** |
+ * Clones |this| and returns the cloned object. |
+ * @return {Rect} A copy of |this|. |
+ */ |
+ clone: function() { |
+ return new Rect(this.x, this.y, this.width, this.height); |
} |
}; |
return { |
+ convertInchesToInchesText: convertInchesToInchesText, |
+ convertPointsToInchesTextAndBack:convertPointsToInchesTextAndBack, |
+ convertPointsToInchesText: convertPointsToInchesText, |
extractMarginValue: extractMarginValue, |
- isMarginTextValid: isMarginTextValid, |
+ marginValidationStates: marginValidationStates, |
Rect: Rect, |
+ validateMarginText: validateMarginText, |
+ validateMarginValue: validateMarginValue |
}; |
}); |