don't do full render when zooming happens in viewport rather than
offscreen canvas don't do clearRect on renderChunk (Chrome shouldn't have the flickering issue anymore)
This commit is contained in:
parent
cf865a0ba4
commit
a3e35cced6
|
@ -65,10 +65,15 @@ export default class MarkdownParser {
|
|||
|
||||
/*
|
||||
* parses Articles (contains paragraphs, code-blocks, numeration, etc.)
|
||||
* returns when encountering heading of level or lower (iter is at # position)
|
||||
* @param text string of text
|
||||
* @param start number of position in text where to start
|
||||
* @param level the number of heading levels we are in
|
||||
* @param indent ndentation that should be considered
|
||||
* returns when encountering heading of <= level (iter is at # position)
|
||||
* or heading-cancel with three spaces (iter is past newlines)
|
||||
* or ident is smaller than given
|
||||
*/
|
||||
parseArticle(text: string, start: number, level = 0) {
|
||||
parseArticle(text: string, start: number, level = 0, indent = 0) {
|
||||
let iter = start;
|
||||
const mdArray = [];
|
||||
let paraStart = iter;
|
||||
|
@ -116,6 +121,11 @@ export default class MarkdownParser {
|
|||
return [mdArray, iter];
|
||||
}
|
||||
|
||||
parseList(text: string, start: number) {
|
||||
const iter = start;
|
||||
const mdArray = [];
|
||||
}
|
||||
|
||||
/*
|
||||
* parse Code Block
|
||||
* start is first character after the initializing ```
|
||||
|
|
|
@ -12,7 +12,17 @@ import {
|
|||
export default (store) => (next) => (action) => {
|
||||
const { type } = action;
|
||||
|
||||
if (type === 'SET_HISTORICAL_TIME') {
|
||||
let prevScale = null;
|
||||
|
||||
switch (type) {
|
||||
case 'TOGGLE_HISTORICAL_VIEW':
|
||||
case 'SET_SCALE': {
|
||||
const state = store.getState();
|
||||
prevScale = state.canvas.viewscale;
|
||||
break;
|
||||
}
|
||||
|
||||
case 'SET_HISTORICAL_TIME': {
|
||||
const state = store.getState();
|
||||
const renderer = getRenderer();
|
||||
const {
|
||||
|
@ -23,6 +33,11 @@ export default (store) => (next) => (action) => {
|
|||
oldDate,
|
||||
oldTime,
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
// nothing
|
||||
}
|
||||
|
||||
// executed after reducers
|
||||
|
@ -78,7 +93,7 @@ export default (store) => (next) => (action) => {
|
|||
case 'TOGGLE_HISTORICAL_VIEW':
|
||||
case 'SET_SCALE': {
|
||||
const renderer = getRenderer();
|
||||
renderer.updateScale(state);
|
||||
renderer.updateScale(state, prevScale);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -176,6 +176,7 @@ class Renderer {
|
|||
|
||||
updateScale(
|
||||
state,
|
||||
prevScale = null,
|
||||
) {
|
||||
const {
|
||||
viewscale,
|
||||
|
@ -196,7 +197,12 @@ class Renderer {
|
|||
this.tiledZoom = tiledZoom;
|
||||
this.relScale = relScale;
|
||||
this.updateView(state);
|
||||
if (prevScale === null
|
||||
|| viewscale < SCALE_THREASHOLD || prevScale < SCALE_THREASHOLD) {
|
||||
this.forceNextRender = true;
|
||||
} else {
|
||||
this.forceNextSubrender = true;
|
||||
}
|
||||
}
|
||||
|
||||
updateView(state) {
|
||||
|
@ -307,9 +313,6 @@ class Renderer {
|
|||
} = state.canvas;
|
||||
|
||||
let { relScale } = this;
|
||||
// clear rect is just needed for Google Chrome, else it would flash
|
||||
// regularly
|
||||
context.clearRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
|
||||
|
||||
// Disable smoothing
|
||||
// making it dependent on the scale is needed for Google Chrome, else
|
||||
|
@ -544,9 +547,6 @@ class Renderer {
|
|||
historicalCanvasSize,
|
||||
} = state.canvas;
|
||||
|
||||
|
||||
// clear rect is just needed for Google Chrome, else it would flash
|
||||
context.clearRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
|
||||
// Disable smoothing
|
||||
// making it dependent on the scale is needed for Google Chrome, else
|
||||
// scale <1 would look shit
|
||||
|
|
Loading…
Reference in New Issue
Block a user