OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 cr.define('print_preview', function() { | 5 cr.define('print_preview', function() { |
6 'use strict'; | 6 'use strict'; |
7 | 7 |
8 /** | 8 /** |
9 * An immutable ordered set of page numbers. | 9 * An immutable ordered set of page numbers. |
10 * @param {!Array.<number>} pageNumberList A list of page numbers to include | 10 * @param {!Array.<number>} pageNumberList A list of page numbers to include |
11 * in the set. | 11 * in the set. |
12 * @constructor | 12 * @constructor |
13 */ | 13 */ |
14 function PageNumberSet(pageNumberList) { | 14 function PageNumberSet(pageNumberList) { |
15 /** | 15 /** |
16 * Internal data store for the page number set. | 16 * Internal data store for the page number set. |
17 * @type {!Array.<number>} | 17 * @type {!Array.<number>} |
18 * @private | 18 * @private |
19 */ | 19 */ |
20 this.pageNumberSet_ = pageListToPageSet(pageNumberList); | 20 this.pageNumberSet_ = pageListToPageSet(pageNumberList); |
21 }; | 21 }; |
22 | 22 |
23 /** | |
24 * @param {string} pageRangeStr String form of a page range. I.e. '2,3,4-5'. | |
25 * If string is empty, all page numbers will be in the page number set. | |
26 * @param {number} totalPageCount Total number of pages in the original | |
27 * document. | |
28 * @return {print_preview.PageNumberSet} Page number set parsed from the | |
29 * given page range string and total page count. Null returned if | |
30 * the given page range string is invalid. | |
31 */ | |
32 PageNumberSet.parse = function(pageRangeStr, totalPageCount) { | |
33 if (pageRangeStr == '') { | |
34 var pageNumberList = []; | |
35 for (var i = 0; i < totalPageCount; i++) { | |
36 pageNumberList.push(i + 1); | |
37 } | |
38 return new PageNumberSet(pageNumberList); | |
39 } else { | |
40 return isPageRangeTextValid(pageRangeStr, totalPageCount) ? | |
41 new PageNumberSet( | |
42 pageRangeTextToPageList(pageRangeStr, totalPageCount)) : null; | |
43 } | |
44 }; | |
45 | |
46 PageNumberSet.prototype = { | 23 PageNumberSet.prototype = { |
47 /** @return {number} The number of page numbers in the set. */ | 24 /** @return {number} The number of page numbers in the set. */ |
48 get size() { | 25 get size() { |
49 return this.pageNumberSet_.length; | 26 return this.pageNumberSet_.length; |
50 }, | 27 }, |
51 | 28 |
52 /** | 29 /** |
53 * @param {number} index 0-based index of the page number to get. | 30 * @param {number} index 0-based index of the page number to get. |
54 * @return {number} Page number at the given index. | 31 * @return {number} Page number at the given index. |
55 */ | 32 */ |
(...skipping 11 matching lines...) Expand all Loading... |
67 | 44 |
68 /** | 45 /** |
69 * @param {number} 1-based number of the page to get index of. | 46 * @param {number} 1-based number of the page to get index of. |
70 * @return {number} 0-based index of the given page number with respect to | 47 * @return {number} 0-based index of the given page number with respect to |
71 * all of the pages in the page range. | 48 * all of the pages in the page range. |
72 */ | 49 */ |
73 getPageNumberIndex: function(pageNumber) { | 50 getPageNumberIndex: function(pageNumber) { |
74 return this.pageNumberSet_.indexOf(pageNumber); | 51 return this.pageNumberSet_.indexOf(pageNumber); |
75 }, | 52 }, |
76 | 53 |
77 /** | |
78 * @return {!Array.<object.<{from: number, to: number}>>} A list of page | |
79 * ranges suitable for use in the native layer. | |
80 */ | |
81 getPageRanges: function() { | |
82 return pageSetToPageRanges(this.pageNumberSet_); | |
83 }, | |
84 | |
85 /** @return {!Array.<number>} Array representation of the set. */ | 54 /** @return {!Array.<number>} Array representation of the set. */ |
86 asArray: function() { | 55 asArray: function() { |
87 return this.pageNumberSet_.slice(0); | 56 return this.pageNumberSet_.slice(0); |
88 }, | 57 }, |
89 | |
90 /** | |
91 * @param {print_preview.PageNumberSet} other Page number set to compare | |
92 * against. | |
93 * @return {boolean} Whether another page number set is equal to this one. | |
94 */ | |
95 equals: function(other) { | |
96 return other == null ? | |
97 false : areArraysEqual(this.pageNumberSet_, other.pageNumberSet_); | |
98 } | |
99 }; | 58 }; |
100 | 59 |
101 // Export | 60 // Export |
102 return { | 61 return { |
103 PageNumberSet: PageNumberSet | 62 PageNumberSet: PageNumberSet |
104 }; | 63 }; |
105 }); | 64 }); |
OLD | NEW |