| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 'use strict'; | 5 'use strict'; |
| 6 | 6 |
| 7 <include src="../../../../ui/webui/resources/js/util.js"> | 7 <include src="../../../../ui/webui/resources/js/util.js"> |
| 8 <include src="pdf_scripting_api.js"> | 8 <include src="pdf_scripting_api.js"> |
| 9 <include src="viewport.js"> | 9 <include src="viewport.js"> |
| 10 | 10 |
| 11 /** | 11 /** |
| 12 * @return {number} Width of a scrollbar in pixels | 12 * @return {number} Width of a scrollbar in pixels |
| 13 */ | 13 */ |
| 14 function getScrollbarWidth() { | 14 function getScrollbarWidth() { |
| 15 var div = document.createElement('div'); | 15 var div = document.createElement('div'); |
| 16 div.style.visibility = 'hidden'; | 16 div.style.visibility = 'hidden'; |
| 17 div.style.overflow = 'scroll'; | 17 div.style.overflow = 'scroll'; |
| 18 div.style.width = '50px'; | 18 div.style.width = '50px'; |
| 19 div.style.height = '50px'; | 19 div.style.height = '50px'; |
| 20 div.style.position = 'absolute'; | 20 div.style.position = 'absolute'; |
| 21 document.body.appendChild(div); | 21 document.body.appendChild(div); |
| 22 var result = div.offsetWidth - div.clientWidth; | 22 var result = div.offsetWidth - div.clientWidth; |
| 23 div.parentNode.removeChild(div); | 23 div.parentNode.removeChild(div); |
| 24 return result; | 24 return result; |
| 25 } | 25 } |
| 26 | 26 |
| 27 /** | 27 /** |
| 28 * The minimum number of pixels to offset the toolbar by from the bottom and |
| 29 * right side of the screen. |
| 30 */ |
| 31 PDFViewer.MIN_TOOLBAR_OFFSET = 15; |
| 32 |
| 33 /** |
| 28 * Creates a new PDFViewer. There should only be one of these objects per | 34 * Creates a new PDFViewer. There should only be one of these objects per |
| 29 * document. | 35 * document. |
| 30 */ | 36 */ |
| 31 function PDFViewer() { | 37 function PDFViewer() { |
| 32 // The sizer element is placed behind the plugin element to cause scrollbars | 38 // The sizer element is placed behind the plugin element to cause scrollbars |
| 33 // to be displayed in the window. It is sized according to the document size | 39 // to be displayed in the window. It is sized according to the document size |
| 34 // of the pdf and zoom level. | 40 // of the pdf and zoom level. |
| 35 this.sizer_ = $('sizer'); | 41 this.sizer_ = $('sizer'); |
| 36 this.toolbar_ = $('toolbar'); | 42 this.toolbar_ = $('toolbar'); |
| 37 this.pageIndicator_ = $('page-indicator'); | 43 this.pageIndicator_ = $('page-indicator'); |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 if (this.viewport_.fittingType == Viewport.FittingType.FIT_TO_PAGE) { | 310 if (this.viewport_.fittingType == Viewport.FittingType.FIT_TO_PAGE) { |
| 305 $('fit-to-page-button').classList.add('polymer-selected'); | 311 $('fit-to-page-button').classList.add('polymer-selected'); |
| 306 } else if (this.viewport_.fittingType == | 312 } else if (this.viewport_.fittingType == |
| 307 Viewport.FittingType.FIT_TO_WIDTH) { | 313 Viewport.FittingType.FIT_TO_WIDTH) { |
| 308 $('fit-to-width-button').classList.add('polymer-selected'); | 314 $('fit-to-width-button').classList.add('polymer-selected'); |
| 309 } | 315 } |
| 310 | 316 |
| 311 var hasScrollbars = this.viewport_.documentHasScrollbars(); | 317 var hasScrollbars = this.viewport_.documentHasScrollbars(); |
| 312 var scrollbarWidth = this.viewport_.scrollbarWidth; | 318 var scrollbarWidth = this.viewport_.scrollbarWidth; |
| 313 // Offset the toolbar position so that it doesn't move if scrollbars appear. | 319 // Offset the toolbar position so that it doesn't move if scrollbars appear. |
| 314 var toolbarRight = hasScrollbars.vertical ? 0 : scrollbarWidth; | 320 var toolbarRight = Math.max(PDFViewer.MIN_TOOLBAR_OFFSET, scrollbarWidth); |
| 315 var toolbarBottom = hasScrollbars.horizontal ? 0 : scrollbarWidth; | 321 var toolbarBottom = Math.max(PDFViewer.MIN_TOOLBAR_OFFSET, scrollbarWidth); |
| 322 if (hasScrollbars.vertical) |
| 323 toolbarRight -= scrollbarWidth; |
| 324 if (hasScrollbars.horizontal) |
| 325 toolbarBottom -= scrollbarWidth; |
| 316 this.toolbar_.style.right = toolbarRight + 'px'; | 326 this.toolbar_.style.right = toolbarRight + 'px'; |
| 317 this.toolbar_.style.bottom = toolbarBottom + 'px'; | 327 this.toolbar_.style.bottom = toolbarBottom + 'px'; |
| 318 | 328 |
| 319 // Update the page indicator. | 329 // Update the page indicator. |
| 320 var visiblePage = this.viewport_.getMostVisiblePage(); | 330 var visiblePage = this.viewport_.getMostVisiblePage(); |
| 321 this.pageIndicator_.index = visiblePage; | 331 this.pageIndicator_.index = visiblePage; |
| 322 if (this.documentDimensions_.pageDimensions.length > 1 && | 332 if (this.documentDimensions_.pageDimensions.length > 1 && |
| 323 hasScrollbars.vertical) { | 333 hasScrollbars.vertical) { |
| 324 this.pageIndicator_.style.visibility = 'visible'; | 334 this.pageIndicator_.style.visibility = 'visible'; |
| 325 } else { | 335 } else { |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 | 417 |
| 408 /** | 418 /** |
| 409 * @type {Viewport} the viewport of the PDF viewer. | 419 * @type {Viewport} the viewport of the PDF viewer. |
| 410 */ | 420 */ |
| 411 get viewport() { | 421 get viewport() { |
| 412 return this.viewport_; | 422 return this.viewport_; |
| 413 } | 423 } |
| 414 }; | 424 }; |
| 415 | 425 |
| 416 var viewer = new PDFViewer(); | 426 var viewer = new PDFViewer(); |
| OLD | NEW |