diff --git a/src/core/Markdown.js b/src/core/Markdown.js index 44aedb2..22c7597 100644 --- a/src/core/Markdown.js +++ b/src/core/Markdown.js @@ -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 ``` diff --git a/src/store/rendererHook.js b/src/store/rendererHook.js index 36ff042..498dc34 100644 --- a/src/store/rendererHook.js +++ b/src/store/rendererHook.js @@ -12,17 +12,32 @@ import { export default (store) => (next) => (action) => { const { type } = action; - if (type === 'SET_HISTORICAL_TIME') { - const state = store.getState(); - const renderer = getRenderer(); - const { - historicalDate: oldDate, - historicalTime: oldTime, - } = state.canvas; - renderer.updateOldHistoricalTime( - oldDate, - oldTime, - ); + 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 { + historicalDate: oldDate, + historicalTime: oldTime, + } = state.canvas; + renderer.updateOldHistoricalTime( + 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; } diff --git a/src/ui/Renderer2D.js b/src/ui/Renderer2D.js index 63f57f1..0b69118 100644 --- a/src/ui/Renderer2D.js +++ b/src/ui/Renderer2D.js @@ -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); - this.forceNextRender = true; + 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