2010-12-13 15:07:20 +01:00
|
|
|
/*
|
2011-01-24 00:34:05 +01:00
|
|
|
* Copyright [2011] [wisemapping]
|
2010-12-13 15:07:20 +01:00
|
|
|
*
|
2011-01-24 01:03:12 +01:00
|
|
|
* Licensed under WiseMapping Public License, Version 1.0 (the "License").
|
|
|
|
* It is basically the Apache License, Version 2.0 (the "License") plus the
|
2011-01-24 00:34:05 +01:00
|
|
|
* "powered by wisemapping" text requirement on every single page;
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the license at
|
2010-12-13 15:07:20 +01:00
|
|
|
*
|
2011-01-24 00:34:05 +01:00
|
|
|
* http://www.wisemapping.org/license
|
2010-12-13 15:07:20 +01:00
|
|
|
*
|
2011-01-24 00:34:05 +01:00
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
2010-12-13 15:07:20 +01:00
|
|
|
*/
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer = function()
|
|
|
|
{
|
|
|
|
var svgElement = window.document.createElementNS(this.svgNamespace, 'path');
|
|
|
|
web2d.peer.svg.ElementPeer.call(this, svgElement);
|
2011-04-20 10:43:04 +02:00
|
|
|
this._style={fill:'#495879'};
|
2010-12-13 15:07:20 +01:00
|
|
|
this._updateStyle();
|
|
|
|
this._customControlPoint_1 = false;
|
|
|
|
this._customControlPoint_2 = false;
|
|
|
|
this._control1=new core.Point();
|
|
|
|
this._control2=new core.Point();
|
|
|
|
this._lineStyle=true;
|
|
|
|
};
|
|
|
|
|
|
|
|
objects.extend(web2d.peer.svg.CurvedLinePeer, web2d.peer.svg.ElementPeer);
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.setSrcControlPoint = function(control){
|
|
|
|
this._customControlPoint_1 = true;
|
2011-05-06 16:29:25 +02:00
|
|
|
var change = this._control1.x!=control.x || this._control1.y!=control.y;
|
2010-12-13 15:07:20 +01:00
|
|
|
if(core.Utils.isDefined(control.x)){
|
|
|
|
this._control1 = control;
|
2011-01-14 18:10:15 +01:00
|
|
|
this._control1.x = parseInt(this._control1.x);
|
|
|
|
this._control1.y = parseInt(this._control1.y)
|
2010-12-13 15:07:20 +01:00
|
|
|
}
|
2011-05-06 16:29:25 +02:00
|
|
|
if(change)
|
|
|
|
this._updatePath();
|
2010-12-13 15:07:20 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.setDestControlPoint = function(control){
|
|
|
|
this._customControlPoint_2 = true;
|
2011-05-06 16:29:25 +02:00
|
|
|
var change = this._control2.x!=control.x || this._control2.y!=control.y;
|
2010-12-13 15:07:20 +01:00
|
|
|
if(core.Utils.isDefined(control.x)){
|
|
|
|
this._control2 = control;
|
2011-01-14 18:10:15 +01:00
|
|
|
this._control2.x = parseInt(this._control2.x);
|
|
|
|
this._control2.y = parseInt(this._control2.y)
|
2010-12-13 15:07:20 +01:00
|
|
|
}
|
2011-05-06 16:29:25 +02:00
|
|
|
if(change)
|
|
|
|
this._updatePath();
|
2010-12-13 15:07:20 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.isSrcControlPointCustom = function() {
|
|
|
|
return this._customControlPoint_1;
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.isDestControlPointCustom = function() {
|
|
|
|
return this._customControlPoint_2;
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.setIsSrcControlPointCustom = function(isCustom) {
|
|
|
|
this._customControlPoint_1 = isCustom;
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.setIsDestControlPointCustom = function(isCustom) {
|
|
|
|
this._customControlPoint_2 = isCustom;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.getControlPoints = function(){
|
|
|
|
return [this._control1, this._control2];
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.setFrom = function(x1, y1)
|
|
|
|
{
|
2011-05-06 16:29:25 +02:00
|
|
|
var change = this._x1!=parseInt(x1) || this._y1!=parseInt(y1);
|
2011-01-14 18:10:15 +01:00
|
|
|
this._x1 = parseInt(x1);
|
|
|
|
this._y1 = parseInt(y1);
|
2011-05-06 16:29:25 +02:00
|
|
|
if(change)
|
|
|
|
this._updatePath();
|
2010-12-13 15:07:20 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.setTo = function(x2, y2)
|
|
|
|
{
|
2011-05-06 16:29:25 +02:00
|
|
|
var change = this._x2!=parseInt(x2) || this._y2!=parseInt(y2);
|
2011-01-14 18:10:15 +01:00
|
|
|
this._x2 = parseInt(x2);
|
|
|
|
this._y2 = parseInt(y2);
|
2011-05-06 16:29:25 +02:00
|
|
|
if(change)
|
|
|
|
this._updatePath();
|
2010-12-13 15:07:20 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.getFrom = function()
|
|
|
|
{
|
|
|
|
return new core.Point(this._x1,this._y1);
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.getTo = function()
|
|
|
|
{
|
|
|
|
return new core.Point(this._x2,this._y2);
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.setStrokeWidth = function(width)
|
|
|
|
{
|
|
|
|
this._style['stroke-width']= width;
|
|
|
|
this._updateStyle();
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.setColor = function(color)
|
|
|
|
{
|
|
|
|
this._style['stroke']= color;
|
|
|
|
this._style['fill']=color;
|
|
|
|
this._updateStyle();
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.updateLine = function(avoidControlPointFix){
|
|
|
|
this._updatePath(avoidControlPointFix);
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.setLineStyle = function (style){
|
|
|
|
this._lineStyle=style;
|
|
|
|
if(this._lineStyle){
|
|
|
|
this._style['fill']=this._fill;
|
|
|
|
} else {
|
|
|
|
this._fill = this._style['fill'];
|
|
|
|
this._style['fill']='none';
|
|
|
|
}
|
|
|
|
this._updateStyle();
|
|
|
|
this.updateLine();
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.getLineStyle = function (){
|
|
|
|
return this._lineStyle;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2011-01-16 15:48:53 +01:00
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.setShowEndArrow = function(visible){
|
|
|
|
this._showEndArrow =visible;
|
2010-12-13 15:07:20 +01:00
|
|
|
this.updateLine();
|
|
|
|
};
|
|
|
|
|
2011-01-16 15:48:53 +01:00
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.isShowEndArrow = function(){
|
|
|
|
return this._showEndArrow;
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.setShowStartArrow = function(visible){
|
|
|
|
this._showStartArrow =visible;
|
|
|
|
this.updateLine();
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.isShowStartArrow = function(){
|
|
|
|
return this._showStartArrow;
|
2010-12-13 15:07:20 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype._updatePath = function(avoidControlPointFix)
|
|
|
|
{
|
2011-05-06 16:29:25 +02:00
|
|
|
if(core.Utils.isDefined(this._x1) && core.Utils.isDefined(this._y1) && core.Utils.isDefined(this._x2) && core.Utils.isDefined(this._y2))
|
2011-05-04 05:18:10 +02:00
|
|
|
{
|
|
|
|
this._calculateAutoControlPoints(avoidControlPointFix);
|
|
|
|
var path = "M"+this._x1+","+this._y1
|
|
|
|
+" C"+(this._control1.x + this._x1)+","+(this._control1.y+this._y1)+" "
|
|
|
|
+(this._control2.x+this._x2)+","+(this._control2.y+this._y2)+" "
|
|
|
|
+this._x2+","+this._y2+
|
|
|
|
(this._lineStyle?" "
|
|
|
|
+(this._control2.x+this._x2)+","+(this._control2.y+this._y2+3)+" "
|
|
|
|
+(this._control1.x+this._x1)+","+(this._control1.y+this._y1+5)+" "
|
|
|
|
+this._x1+","+(this._y1+7)+" Z"
|
|
|
|
:""
|
|
|
|
);
|
|
|
|
this._native.setAttribute("d",path);
|
|
|
|
}
|
2010-12-13 15:07:20 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype._updateStyle = function()
|
|
|
|
{
|
|
|
|
var style = "";
|
|
|
|
for(var key in this._style){
|
|
|
|
style+=key+":"+this._style[key]+" ";
|
|
|
|
}
|
|
|
|
this._native.setAttribute("style",style);
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype._calculateAutoControlPoints = function(avoidControlPointFix){
|
|
|
|
//Both points available, calculate real points
|
|
|
|
var defaultpoints = core.Utils.calculateDefaultControlPoints(new core.Point(this._x1, this._y1),new core.Point(this._x2,this._y2));
|
|
|
|
if(!this._customControlPoint_1 && !(core.Utils.isDefined(avoidControlPointFix) && avoidControlPointFix==0)){
|
|
|
|
this._control1.x = defaultpoints[0].x;
|
|
|
|
this._control1.y = defaultpoints[0].y;
|
|
|
|
}
|
|
|
|
if(!this._customControlPoint_2 && !(core.Utils.isDefined(avoidControlPointFix) && avoidControlPointFix==1)){
|
|
|
|
this._control2.x = defaultpoints[1].x;
|
|
|
|
this._control2.y = defaultpoints[1].y;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
web2d.peer.svg.CurvedLinePeer.prototype.setDashed = function(length,spacing){
|
|
|
|
if(core.Utils.isDefined(length) && core.Utils.isDefined(spacing)){
|
|
|
|
this._native.setAttribute("stroke-dasharray",length+","+spacing);
|
|
|
|
} else {
|
|
|
|
this._native.setAttribute("stroke-dasharray","");
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|