From 9655198357d77d05a652f87e468ea89147da3800 Mon Sep 17 00:00:00 2001 From: Shaunak Kishore Date: Sun, 20 Sep 2015 16:10:39 -0400 Subject: [PATCH] Fix bugs in stroke extraction code --- lib/stroke_extractor.js | 14 ++++++++++---- server/glyphs.js | 14 ++++++++------ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/lib/stroke_extractor.js b/lib/stroke_extractor.js index 9798582f..da74945f 100644 --- a/lib/stroke_extractor.js +++ b/lib/stroke_extractor.js @@ -110,12 +110,12 @@ function orient_paths(paths) { var result = []; for (var i = 0; i < paths.length; i++) { var path = paths[i]; - for (var j = 0; j < paths.length; j++) { + for (var j = 0; j < path.length; j++) { var ref = [path[j].start, path[j].end]; path[j].start = ref[1]; path[j].end = ref[0]; } - path[j].reverse(); + path.reverse(); } } return paths; @@ -127,7 +127,8 @@ function get_2x_area(path) { var area = 0; for (var i = 0; i < path.length; i++) { var segment = path[i]; - area += (segment.end.x - segment.start.x)*(segment.end.y + segment.start.y); + area += (segment.end[0] + segment.start[0])* + (segment.end[1] - segment.start[1]); } return area; } @@ -514,7 +515,12 @@ this.get_glyph_render_data = function(glyph, manual_bridges, classifier) { var strokes = extract_strokes( paths, endpoints, manual_bridges || bridges, log); var expected = UNIHAN_STROKE_COUNTS[glyph.name]; - if (strokes.length === expected) { + log.push(['success', 'For character: ' + + String.fromCodePoint(parseInt(glyph.name.substr(3), 16))]); + if (expected === undefined) { + log.push(['success', 'Extracted ' + strokes.length + ' stroke' + + (strokes.length > 1 ? 's' : '') + '.']); + } else if (strokes.length === expected) { log.push(['success', 'Extracted ' + strokes.length + ' stroke' + (strokes.length > 1 ? 's' : '') + '.']); } else { diff --git a/server/glyphs.js b/server/glyphs.js index a2287dbe..4027d3e7 100644 --- a/server/glyphs.js +++ b/server/glyphs.js @@ -1,12 +1,14 @@ function save_glyph(glyph) { check(glyph.name, String); var saved_glyph = _.extend({}, glyph); - saved_glyph.derived = { - errors: saved_glyph.render.log.filter(function(pair) { - return pair[0] !== 'success'; - }), - strokes: saved_glyph.render.strokes, - }; + if (saved_glyph.render !== undefined) { + saved_glyph.derived = { + errors: saved_glyph.render.log.filter(function(pair) { + return pair[0] !== 'success'; + }), + strokes: saved_glyph.render.strokes, + }; + } delete saved_glyph.render; Glyphs.upsert({name: glyph.name}, saved_glyph); return glyph;