From 334032da595677653e101c1f24d02c3403abeeda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Stra=C3=9Fburger?= Date: Wed, 28 Sep 2016 19:29:54 +0200 Subject: [PATCH] :art: optimizing canvas size calculation --- main.js | 2 +- src/BrailleBuffer.coffee | 2 +- src/Renderer.coffee | 15 +++++++++++++-- src/Termap.coffee | 4 ++-- styles/bright.json | 8 ++++++++ tiles/germany.pbf.gz | Bin 0 -> 33507 bytes 6 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 tiles/germany.pbf.gz diff --git a/main.js b/main.js index dc92fd2..0c1202e 100644 --- a/main.js +++ b/main.js @@ -17,7 +17,7 @@ const Tile = require(__dirname+'/src/Tile') termap = new Termap(); // TODO: abstracing this class, create loader class -data = fs.readFileSync(__dirname+"/tiles/regensburg.pbf.gz"); +data = fs.readFileSync(__dirname+"/tiles/germany.pbf.gz"); tile = new Tile(data); termap.renderer.features = tile.layers termap._draw(); diff --git a/src/BrailleBuffer.coffee b/src/BrailleBuffer.coffee index b15757e..00f955e 100644 --- a/src/BrailleBuffer.coffee +++ b/src/BrailleBuffer.coffee @@ -73,7 +73,7 @@ module.exports = class BrailleBuffer delimeter = "\n" for idx in [0...@pixelBuffer.length] - output.push delimeter unless idx % (@width/2) + output.push delimeter if idx and (idx % (@width/2)) is 0 if currentColor isnt colorCode = @_termColor @foregroundBuffer[idx], @backgroundBuffer[idx] output.push currentColor = colorCode diff --git a/src/Renderer.coffee b/src/Renderer.coffee index b129f9d..f3db953 100644 --- a/src/Renderer.coffee +++ b/src/Renderer.coffee @@ -19,7 +19,18 @@ module.exports = class Renderer labelMargin: 5 #"poi_label", "water", - drawOrder: ["water", "admin", "building", "road", "place_label", "poi_label", "housenum_label"] + drawOrder: [ + "water" + "water_label" + "admin" + "building" + "road" + "place_label" + "poi_label" + "housenum_label" + "country_label" + "state_label" + ] icons: car: "🚗" @@ -155,7 +166,7 @@ module.exports = class Renderer write = (text) => @canvas.text text, x, point[1], colorCode, false - if @labelBuffer.writeIfPossible text, x, point[1], + if @labelBuffer.writeIfPossible text, x, point[1], margin write text else if @config.layers[layer]?.cluster and @labelBuffer.writeIfPossible "X", x, point[1], 3 write "◉" diff --git a/src/Termap.coffee b/src/Termap.coffee index 225f3e2..d4cd041 100644 --- a/src/Termap.coffee +++ b/src/Termap.coffee @@ -65,8 +65,8 @@ module.exports = class Termap @zoom = Math.log(4096/@width)/Math.LN2 _resizeRenderer: (cb) -> - @width = (process.stdout.columns-1) >> 1 << 2 - @height = process.stdout.rows * 4 - 8 + @width = process.stdout.columns >> 1 << 2 + @height = process.stdout.rows * 4 @renderer.setSize @width, @height diff --git a/styles/bright.json b/styles/bright.json index 09ec750..16cdde7 100644 --- a/styles/bright.json +++ b/styles/bright.json @@ -1158,6 +1158,14 @@ }, "source-layer": "housenum_label" }, + { + "type": "symbol", + "id": "water_label", + "paint": { + "text-color": "#333" + }, + "source-layer": "housenum_label" + }, { "type": "symbol", "id": "place_label_other", diff --git a/tiles/germany.pbf.gz b/tiles/germany.pbf.gz new file mode 100644 index 0000000000000000000000000000000000000000..9ec3aad38a248403fb1244995d9505ff34806831 GIT binary patch literal 33507 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 *)D43m?f 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%0Dl&5+#) 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 literal 0 HcmV?d00001