diff --git a/script/BaseVertex.js b/script/BaseVertex.js index d71c8f9..48eb2d9 100755 --- a/script/BaseVertex.js +++ b/script/BaseVertex.js @@ -117,7 +117,7 @@ BaseVertex.prototype.HitTest = function (pos) var lineFinish1 = relativePos.add(new Point(1000, 0)); var lineFinish2 = relativePos.add(new Point(-1000, 0)); - var pointsVertex1 = GetPointsForShape(shape, this.model.diameter + width); + var pointsVertex1 = GetPointsForShape(shape, this.model.diameter + width, this.mainText); pointsVertex1.push(pointsVertex1[0]); var hitNumber1 = 0; diff --git a/script/BaseVertexDrawer.js b/script/BaseVertexDrawer.js index 3c1281e..7aa2a38 100644 --- a/script/BaseVertexDrawer.js +++ b/script/BaseVertexDrawer.js @@ -70,32 +70,34 @@ function GetPentagonPoints(diameter) function GetTextboxPoints(diameter, text) { var res = []; - - var tempContext = document.createElement('canvas').getContext('2d'); - tempContext.font = "bold " + MainTextFontSize + DefaultFont; - var textWidth = tempContext.measureText(text).width + diameter / 2; - + var width = diameter; var height = diameter; - res.push(new Point(-textWidth / 2, -height / 2)); - res.push(new Point(textWidth / 2, -height / 2)); - res.push(new Point(textWidth / 2, height / 2)); - res.push(new Point(-textWidth / 2, height / 2)); + + if (text) + { + var tempContext = document.createElement('canvas').getContext('2d'); + tempContext.font = "bold " + MainTextFontSize + DefaultFont; + width = tempContext.measureText(text).width + diameter / 2; + } + + res.push(new Point(-width / 2, -height / 2)); + res.push(new Point(width / 2, -height / 2)); + res.push(new Point(width / 2, height / 2)); + res.push(new Point(-width / 2, height / 2)); return res; } -function GetPointsForShape(shape, baseGraph) +function GetPointsForShape(shape, diameter, text=null) { - var pointsVertex1 = null; - var diameter = baseGraph.model.diameter; switch (parseInt(shape)) { - case VertexSquareShape: pointsVertex1 = GetSquarePoints(diameter); break; - case VertexTriangleShape: pointsVertex1 = GetTrianglePoints(diameter); break; - case VertexPentagonShape: pointsVertex1 = GetPentagonPoints(diameter); break; - case VertextTextboxShape: pointsVertex1 = GetTextboxPoints(diameter, baseGraph.mainText); break; + case VertexSquareShape: return GetSquarePoints(diameter); break; + case VertexTriangleShape: return GetTrianglePoints(diameter); break; + case VertexPentagonShape: return GetPentagonPoints(diameter); break; + case VertextTextboxShape: return GetTextboxPoints(diameter, text); break; + default: return null; break; } - return pointsVertex1; } function GetSizeForShape(shape, diameter) @@ -106,8 +108,8 @@ function GetSizeForShape(shape, diameter) case VertexTriangleShape: return diameter * 1.5; break; case VertexPentagonShape: return diameter * 1.2; break; case VertextTextboxShape: return diameter; break; + default: return diameter; break; } - return diameter; } function BaseVertexStyle() @@ -342,7 +344,7 @@ BaseVertexDrawer.prototype.DrawShape = function(baseGraph) } else { - var points = GetPointsForShape(this.currentStyle.shape, baseGraph); + var points = GetPointsForShape(this.currentStyle.shape, baseGraph.model.diameter, baseGraph.mainText); this.context.moveTo(baseGraph.position.x + points[points.length - 1].x, baseGraph.position.y + points[points.length - 1].y);