aboutsummaryrefslogtreecommitdiff
path: root/pointless/viewer/presentation.js
blob: 853d764eec805f14095202654823695ab28f3e5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
 * presentation.js
 * Part of Pointless Viewer, a Beamer presentation viewer
 * Copyright 2018 Pacien TRAN-GIRARD
 * License: GNU GPL v3
 */

"use strict";

class Presentation {
  constructor(pdf) {
    this.pdf = pdf;
    this.currentPageIndex = 1;
    this.stage = this._setupStage();
  }

  _setupStage() {
    var self = this;
    var onStageReadyCallback = function() { self._onStageReady(); };
    var onNextCallback = function() { self._onNext(); };
    var onPreviousCallback = function() { self._onPrevious(); };
    return new Stage(onStageReadyCallback, onNextCallback, onPreviousCallback);
  }

  _onStageReady() {
    this._setPage(this.currentPageIndex);
  }

  _onNext() {
    if (this.currentPageIndex === this.pdf.numPages) return;
    this._setPage(this.currentPageIndex + 1);
  }

  _onPrevious() {
    if (this.currentPageIndex === 1) return;
    this._setPage(this.currentPageIndex - 1);
  }

  _setPage(pageIndex) {
    var self = this;
    this.currentPageIndex = pageIndex;
    this.pdf.getPage(this.currentPageIndex).then(function(page) {
      self.stage.setPage(page);
    })
  }
}