Улучшил листание в конце текста
This commit is contained in:
@@ -277,13 +277,13 @@ class TextPage extends Vue {
|
|||||||
context.fillStyle = this.textColor;
|
context.fillStyle = this.textColor;
|
||||||
const spaceWidth = context.measureText(' ').width;
|
const spaceWidth = context.measureText(' ').width;
|
||||||
|
|
||||||
const lines = this.parsed.getLines(bookPos, this.pageLineCount + 1);
|
const lines = this.parsed.getLines(bookPos, 2*this.pageLineCount);
|
||||||
if (!nextChangeLines) {
|
if (!nextChangeLines) {
|
||||||
this.linesDown = lines;
|
this.linesDown = lines;
|
||||||
this.linesUp = this.parsed.getLines(bookPos, -(this.pageLineCount + 1));
|
this.linesUp = this.parsed.getLines(bookPos, -2*this.pageLineCount);
|
||||||
} else {
|
} else {
|
||||||
this.linesDownNext = lines;
|
this.linesDownNext = lines;
|
||||||
this.linesUpNext = this.parsed.getLines(bookPos, -(this.pageLineCount + 1));
|
this.linesUpNext = this.parsed.getLines(bookPos, -2*this.pageLineCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
let y = -this.lineInterval/2 + (this.h - this.pageLineCount*this.lineHeight)/2;
|
let y = -this.lineInterval/2 + (this.h - this.pageLineCount*this.lineHeight)/2;
|
||||||
@@ -403,7 +403,7 @@ class TextPage extends Vue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
doDown() {
|
doDown() {
|
||||||
if (this.linesDown && this.linesDown.length > 1) {
|
if (this.linesDown && this.linesDown.length > this.pageLineCount) {
|
||||||
this.bookPos = this.linesDown[1].begin;
|
this.bookPos = this.linesDown[1].begin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -419,11 +419,12 @@ class TextPage extends Vue {
|
|||||||
let i = this.pageLineCount;
|
let i = this.pageLineCount;
|
||||||
if (this.keepLastToFirst)
|
if (this.keepLastToFirst)
|
||||||
i--;
|
i--;
|
||||||
if (i >= 0 && this.linesDown.length > i) {
|
if (i >= 0 && this.linesDown.length >= 2*i) {
|
||||||
this.currentTransition = this.pageChangeTransition;
|
this.currentTransition = this.pageChangeTransition;
|
||||||
this.pageChangeDirectionDown = true;
|
this.pageChangeDirectionDown = true;
|
||||||
this.bookPos = this.linesDown[i].begin;
|
this.bookPos = this.linesDown[i].begin;
|
||||||
}
|
} else
|
||||||
|
this.doEnd();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -447,8 +448,12 @@ class TextPage extends Vue {
|
|||||||
|
|
||||||
doEnd() {
|
doEnd() {
|
||||||
if (this.parsed.para.length) {
|
if (this.parsed.para.length) {
|
||||||
const lastPara = this.parsed.para[this.parsed.para.length - 1];
|
let i = this.parsed.para.length - 1;
|
||||||
this.bookPos = lastPara.offset + lastPara.length - 1;
|
let lastPos = this.parsed.para[i].offset + this.parsed.para[i].length - 1;
|
||||||
|
const lines = this.parsed.getLines(lastPos, -this.pageLineCount);
|
||||||
|
i = this.pageLineCount - 1;
|
||||||
|
i = (i > lines.length - 1 ? lines.length - 1 : i);
|
||||||
|
this.bookPos = lines[i].begin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user