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.)
|
* 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 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;
|
let iter = start;
|
||||||
const mdArray = [];
|
const mdArray = [];
|
||||||
let paraStart = iter;
|
let paraStart = iter;
|
||||||
|
@ -116,6 +121,11 @@ export default class MarkdownParser {
|
||||||
return [mdArray, iter];
|
return [mdArray, iter];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parseList(text: string, start: number) {
|
||||||
|
const iter = start;
|
||||||
|
const mdArray = [];
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* parse Code Block
|
* parse Code Block
|
||||||
* start is first character after the initializing ```
|
* start is first character after the initializing ```
|
||||||
|
|
|
@ -12,17 +12,32 @@ import {
|
||||||
export default (store) => (next) => (action) => {
|
export default (store) => (next) => (action) => {
|
||||||
const { type } = action;
|
const { type } = action;
|
||||||
|
|
||||||
if (type === 'SET_HISTORICAL_TIME') {
|
let prevScale = null;
|
||||||
const state = store.getState();
|
|
||||||
const renderer = getRenderer();
|
switch (type) {
|
||||||
const {
|
case 'TOGGLE_HISTORICAL_VIEW':
|
||||||
historicalDate: oldDate,
|
case 'SET_SCALE': {
|
||||||
historicalTime: oldTime,
|
const state = store.getState();
|
||||||
} = state.canvas;
|
prevScale = state.canvas.viewscale;
|
||||||
renderer.updateOldHistoricalTime(
|
break;
|
||||||
oldDate,
|
}
|
||||||
oldTime,
|
|
||||||
);
|
case 'SET_HISTORICAL_TIME': {
|
||||||
|
const state = store.getState();
|
||||||
|
const renderer = getRenderer();
|
||||||
|
const {
|
||||||
|
historicalDate: oldDate,
|
||||||
|
historicalTime: oldTime,
|
||||||
|
} = state.canvas;
|
||||||
|
renderer.updateOldHistoricalTime(
|
||||||
|
oldDate,
|
||||||
|
oldTime,
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
// nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
// executed after reducers
|
// executed after reducers
|
||||||
|
@ -78,7 +93,7 @@ export default (store) => (next) => (action) => {
|
||||||
case 'TOGGLE_HISTORICAL_VIEW':
|
case 'TOGGLE_HISTORICAL_VIEW':
|
||||||
case 'SET_SCALE': {
|
case 'SET_SCALE': {
|
||||||
const renderer = getRenderer();
|
const renderer = getRenderer();
|
||||||
renderer.updateScale(state);
|
renderer.updateScale(state, prevScale);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -176,6 +176,7 @@ class Renderer {
|
||||||
|
|
||||||
updateScale(
|
updateScale(
|
||||||
state,
|
state,
|
||||||
|
prevScale = null,
|
||||||
) {
|
) {
|
||||||
const {
|
const {
|
||||||
viewscale,
|
viewscale,
|
||||||
|
@ -196,7 +197,12 @@ class Renderer {
|
||||||
this.tiledZoom = tiledZoom;
|
this.tiledZoom = tiledZoom;
|
||||||
this.relScale = relScale;
|
this.relScale = relScale;
|
||||||
this.updateView(state);
|
this.updateView(state);
|
||||||
this.forceNextRender = true;
|
if (prevScale === null
|
||||||
|
|| viewscale < SCALE_THREASHOLD || prevScale < SCALE_THREASHOLD) {
|
||||||
|
this.forceNextRender = true;
|
||||||
|
} else {
|
||||||
|
this.forceNextSubrender = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateView(state) {
|
updateView(state) {
|
||||||
|
@ -307,9 +313,6 @@ class Renderer {
|
||||||
} = state.canvas;
|
} = state.canvas;
|
||||||
|
|
||||||
let { relScale } = this;
|
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
|
// Disable smoothing
|
||||||
// making it dependent on the scale is needed for Google Chrome, else
|
// making it dependent on the scale is needed for Google Chrome, else
|
||||||
|
@ -544,9 +547,6 @@ class Renderer {
|
||||||
historicalCanvasSize,
|
historicalCanvasSize,
|
||||||
} = state.canvas;
|
} = state.canvas;
|
||||||
|
|
||||||
|
|
||||||
// clear rect is just needed for Google Chrome, else it would flash
|
|
||||||
context.clearRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
|
|
||||||
// Disable smoothing
|
// Disable smoothing
|
||||||
// making it dependent on the scale is needed for Google Chrome, else
|
// making it dependent on the scale is needed for Google Chrome, else
|
||||||
// scale <1 would look shit
|
// scale <1 would look shit
|
||||||
|
|
Loading…
Reference in New Issue
Block a user