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");