jui.define("util.svg.element.path.symbol", [], function() { /** * @class util.svg.element.path.symbol * * @alias PathSymbolElement * @extends util.svg.element.path */ var PathSymbolElement = function() { var ordersString = ""; /** * 심볼 템플릿 * */ this.template = function(width, height) { var r = width, half_width = half_r = width / 2, half_height = height / 2; var start = "a" + half_r + "," + half_r + " 0 1,1 " + r + ",0", end = "a" + half_r + "," + half_r + " 0 1,1 " + -r + ",0"; var obj = { triangle : ["m0," + -half_height, "l" + (half_width) + "," + height, "l" + (-width) + ",0", "l" + (half_width) + "," + (-height)].join(" "), rect : ["m" + (-half_width) + "," + (-half_height), "l" + (width) + ",0", "l0," + (height) , "l" + (-width) + ',0', "l0," + (-height)].join(" "), cross : ["m" + (-half_width) + ',' + (-half_height), "l" + (width) + "," + (height), "m0," + (-height), "l" + (-width) + "," + (height)].join(" "), circle : ["m" + (-r) + ",0", start, end ].join(" ") } obj.rectangle = obj.rect; return obj; } this.join = function() { if(ordersString.length > 0) { this.attr({ d: ordersString }); ordersString = ""; } } /** * 심볼 추가 하기 (튜닝) */ this.add = function(cx, cy, tpl) { ordersString += " M" + (cx) + "," + (cy) + tpl; } /** * path 내 심볼 생성 * */ this.triangle = function(cx, cy, width, height) { return this.MoveTo(cx, cy).moveTo(0, -height/2).lineTo(width/2,height).lineTo(-width, 0).lineTo(width/2, -height); } this.rect = this.rectangle = function(cx, cy, width, height) { return this.MoveTo(cx, cy).moveTo(-width/2, -height/2).lineTo(width,0).lineTo(0, height).lineTo(-width, 0).lineTo(0, -height); } this.cross = function(cx, cy, width, height) { return this.MoveTo(cx, cy).moveTo(-width/2, -height/2).lineTo(width, height).moveTo(0, -height).lineTo(-width, height); } this.circle = function(cx, cy, r) { return this.MoveTo(cx, cy).moveTo(-r, 0).arc(r/2, r/2, 0, 1, 1, r, 0).arc(r/2, r/2, 0, 1, 1, -r, 0); } } return PathSymbolElement; }, "util.svg.element.path");