Remove trunk directory
This commit is contained in:
36
web2d/src/main/javascript/peer/svg/ArialFont.js
Normal file
36
web2d/src/main/javascript/peer/svg/ArialFont.js
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
web2d.peer.svg.ArialFont = function()
|
||||
{
|
||||
web2d.peer.svg.Font.call(this);
|
||||
this._fontFamily="Arial";
|
||||
};
|
||||
|
||||
objects.extend(web2d.peer.svg.ArialFont, web2d.peer.svg.Font);
|
||||
|
||||
web2d.peer.svg.ArialFont.prototype.getFontFamily=function ()
|
||||
{
|
||||
return this._fontFamily;
|
||||
};
|
||||
|
||||
web2d.peer.svg.ArialFont.prototype.getFont=function ()
|
||||
{
|
||||
return web2d.Font.ARIAL;
|
||||
};
|
||||
311
web2d/src/main/javascript/peer/svg/ElementPeer.js
Normal file
311
web2d/src/main/javascript/peer/svg/ElementPeer.js
Normal file
@@ -0,0 +1,311 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
web2d.peer.svg.ElementPeer = function(svgElement)
|
||||
{
|
||||
this._native = svgElement;
|
||||
this._dblClickListeners = new Hash();
|
||||
this._size = {width:1,height:1};
|
||||
this._changeListeners = {};
|
||||
// http://support.adobe.com/devsup/devsup.nsf/docs/50493.htm
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.svgNamespace = 'http://www.w3.org/2000/svg';
|
||||
web2d.peer.svg.ElementPeer.prototype.linkNamespace = 'http://www.w3.org/1999/xlink';
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.setChildren = function(children)
|
||||
{
|
||||
this._children = children;
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.getChildren = function()
|
||||
{
|
||||
var result = this._children;
|
||||
if (!result)
|
||||
{
|
||||
result = [];
|
||||
this._children = result;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.getParent = function()
|
||||
{
|
||||
return this._parent;
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.setParent = function(parent)
|
||||
{
|
||||
this._parent = parent;
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.appendChild = function(elementPeer)
|
||||
{
|
||||
// Store parent and child relationship.
|
||||
elementPeer.setParent(this);
|
||||
var children = this.getChildren();
|
||||
children.include(elementPeer);
|
||||
|
||||
// Append element as a child.
|
||||
this._native.appendChild(elementPeer._native);
|
||||
|
||||
// Broadcast events ...
|
||||
web2d.peer.utils.EventUtils.broadcastChangeEvent(this, "strokeStyle");
|
||||
};
|
||||
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.removeChild = function(elementPeer)
|
||||
{
|
||||
// Store parent and child relationship.
|
||||
elementPeer.setParent(null);
|
||||
var children = this.getChildren();
|
||||
|
||||
// Remove from children array ...
|
||||
var length = children.length;
|
||||
|
||||
children.remove(elementPeer);
|
||||
|
||||
var newLength = children.length;
|
||||
if (newLength >= length)
|
||||
{
|
||||
throw "Could not remove the element.";
|
||||
}
|
||||
/*var found = false;
|
||||
children = children.reject(function(iter)
|
||||
{
|
||||
var equals = (iter._native == elementPeer._native);
|
||||
if (equals)
|
||||
{
|
||||
found = true;
|
||||
}
|
||||
return equals;
|
||||
});
|
||||
|
||||
// Could found the element ?
|
||||
if (!found)
|
||||
{
|
||||
throw "Could not remove the element.";
|
||||
}*/
|
||||
|
||||
// Append element as a child.
|
||||
this._native.removeChild(elementPeer._native);
|
||||
};
|
||||
|
||||
/**
|
||||
* http://www.w3.org/TR/DOM-Level-3-Events/events.html
|
||||
* http://developer.mozilla.org/en/docs/addEventListener
|
||||
*/
|
||||
web2d.peer.svg.ElementPeer.prototype.addEventListener = function(type, listener)
|
||||
{
|
||||
if (type == 'dblclick')
|
||||
{
|
||||
// This is workaround to support double click...
|
||||
var dblListener = function(e)
|
||||
{
|
||||
if (e.detail >= 2)
|
||||
{
|
||||
listener.call(this, e);
|
||||
}
|
||||
};
|
||||
|
||||
this._dblClickListeners[listener] = dblListener;
|
||||
this._native.addEventListener(type, dblListener, false);
|
||||
} else
|
||||
{
|
||||
this._native.addEventListener(type, listener, false);
|
||||
}
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.removeEventListener = function(type, listener)
|
||||
{
|
||||
if (type == 'dblclick')
|
||||
{
|
||||
// This is workaround to support double click...
|
||||
var dblClickListener = this._dblClickListeners[listener];
|
||||
if (dblClickListener == null)
|
||||
{
|
||||
throw "Could not find listener to remove";
|
||||
}
|
||||
type = 'click';
|
||||
this._native.removeEventListener(type, dblClickListener, false);
|
||||
delete this._dblClickListeners[listener];
|
||||
} else
|
||||
{
|
||||
this._native.removeEventListener(type, listener, false);
|
||||
}
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.setSize = function(width, height)
|
||||
{
|
||||
if (core.Utils.isDefined(width))
|
||||
{
|
||||
this._size.width = parseInt(width);
|
||||
this._native.setAttribute('width', parseInt(width));
|
||||
}
|
||||
|
||||
if (core.Utils.isDefined(height))
|
||||
{
|
||||
this._size.height = parseInt(height);
|
||||
this._native.setAttribute('height', parseInt(height));
|
||||
}
|
||||
|
||||
web2d.peer.utils.EventUtils.broadcastChangeEvent(this, "strokeStyle");
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.getSize = function()
|
||||
{
|
||||
return {width:this._size.width,height:this._size.height};
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.setFill = function(color, opacity)
|
||||
{
|
||||
if (core.Utils.isDefined(color))
|
||||
{
|
||||
this._native.setAttribute('fill', color);
|
||||
}
|
||||
if (core.Utils.isDefined(opacity))
|
||||
{
|
||||
this._native.setAttribute('fill-opacity', opacity);
|
||||
}
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.getFill = function()
|
||||
{
|
||||
var color = this._native.getAttribute('fill');
|
||||
var opacity = this._native.getAttribute('fill-opacity');
|
||||
return {color:color, opacity:Number(opacity)};
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.getStroke = function()
|
||||
{
|
||||
var vmlStroke = this._native;
|
||||
var color = vmlStroke.getAttribute('stroke');
|
||||
var dashstyle = this._stokeStyle;
|
||||
var opacity = vmlStroke.getAttribute('stroke-opacity');
|
||||
var width = vmlStroke.getAttribute('stroke-width');
|
||||
return {color: color, style: dashstyle, opacity: opacity, width: width};
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.__stokeStyleToStrokDasharray = {solid:[],dot:[1,3],dash:[4,3],longdash:[10,2],dashdot:[5,3,1,3]};
|
||||
web2d.peer.svg.ElementPeer.prototype.setStroke = function(width, style, color, opacity)
|
||||
{
|
||||
if (core.Utils.isDefined(width))
|
||||
{
|
||||
this._native.setAttribute('stroke-width', width + "px");
|
||||
}
|
||||
if (core.Utils.isDefined(color))
|
||||
{
|
||||
this._native.setAttribute('stroke', color);
|
||||
}
|
||||
if (core.Utils.isDefined(style))
|
||||
{
|
||||
// Scale the dash array in order to be equal to VML. In VML, stroke style doesn't scale.
|
||||
var dashArrayPoints = this.__stokeStyleToStrokDasharray[style];
|
||||
var scale = 1 / web2d.peer.utils.TransformUtil.workoutScale(this).width;
|
||||
|
||||
var strokeWidth = this._native.getAttribute('stroke-width');
|
||||
strokeWidth = parseFloat(strokeWidth);
|
||||
|
||||
var scaledPoints = [];
|
||||
for (var i = 0; i < dashArrayPoints.length; i++)
|
||||
{
|
||||
// VML scale the stroke based on the stroke width.
|
||||
scaledPoints[i] = dashArrayPoints[i] * strokeWidth;
|
||||
|
||||
// Scale the points based on the scale.
|
||||
scaledPoints[i] = (scaledPoints[i] * scale) + "px";
|
||||
}
|
||||
|
||||
// this._native.setAttribute('stroke-dasharray', scaledPoints);
|
||||
this._stokeStyle = style;
|
||||
}
|
||||
|
||||
if (core.Utils.isDefined(opacity))
|
||||
{
|
||||
this._native.setAttribute('stroke-opacity', opacity);
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
* style='visibility: visible'
|
||||
*/
|
||||
web2d.peer.svg.ElementPeer.prototype.setVisibility = function(isVisible)
|
||||
{
|
||||
this._native.setAttribute('visibility', (isVisible) ? 'visible' : 'hidden');
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.isVisible = function()
|
||||
{
|
||||
var visibility = this._native.getAttribute('visibility');
|
||||
return !(visibility == 'hidden');
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.updateStrokeStyle = function()
|
||||
{
|
||||
var strokeStyle = this._stokeStyle;
|
||||
if (this.getParent())
|
||||
{
|
||||
if (strokeStyle && strokeStyle != 'solid')
|
||||
{
|
||||
this.setStroke(null, strokeStyle);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.attachChangeEventListener = function(type, listener)
|
||||
{
|
||||
var listeners = this.getChangeEventListeners(type);
|
||||
if (!listener)
|
||||
{
|
||||
throw "Listener can not be null";
|
||||
}
|
||||
listeners.push(listener);
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.getChangeEventListeners = function(type)
|
||||
{
|
||||
var listeners = this._changeListeners[type];
|
||||
if (!listeners)
|
||||
{
|
||||
listeners = [];
|
||||
this._changeListeners[type] = listeners;
|
||||
}
|
||||
return listeners;
|
||||
};
|
||||
|
||||
/**
|
||||
* Move element to the front
|
||||
*/
|
||||
web2d.peer.svg.ElementPeer.prototype.moveToFront = function()
|
||||
{
|
||||
this._native.parentNode.appendChild(this._native);
|
||||
};
|
||||
|
||||
/**
|
||||
* Move element to the back
|
||||
*/
|
||||
web2d.peer.svg.ElementPeer.prototype.moveToBack = function()
|
||||
{
|
||||
this._native.parentNode.insertBefore(this._native, this._native.parentNode.firstChild);
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElementPeer.prototype.setCursor = function(type)
|
||||
{
|
||||
this._native.style.cursor = type;
|
||||
};
|
||||
67
web2d/src/main/javascript/peer/svg/ElipsePeer.js
Normal file
67
web2d/src/main/javascript/peer/svg/ElipsePeer.js
Normal file
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
web2d.peer.svg.ElipsePeer = function()
|
||||
{
|
||||
var svgElement = window.document.createElementNS(this.svgNamespace, 'ellipse');
|
||||
web2d.peer.svg.ElementPeer.call(this, svgElement);
|
||||
this.attachChangeEventListener("strokeStyle", web2d.peer.svg.ElementPeer.prototype.updateStrokeStyle);
|
||||
this._position={x:0, y:0};
|
||||
};
|
||||
|
||||
objects.extend(web2d.peer.svg.ElipsePeer, web2d.peer.svg.ElementPeer);
|
||||
|
||||
web2d.peer.svg.ElipsePeer.prototype.setSize = function(width, height)
|
||||
{
|
||||
web2d.peer.svg.ElipsePeer.superClass.setSize.call(this, width, height);
|
||||
if (core.Utils.isDefined(width))
|
||||
{
|
||||
this._native.setAttribute('rx', width / 2);
|
||||
}
|
||||
|
||||
if (core.Utils.isDefined(height))
|
||||
{
|
||||
this._native.setAttribute('ry', height / 2);
|
||||
}
|
||||
|
||||
var pos = this.getPosition();
|
||||
this.setPosition(pos.x, pos.y);
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElipsePeer.prototype.setPosition = function(cx, cy)
|
||||
{
|
||||
var size =this.getSize();
|
||||
cx =cx + size.width/2;
|
||||
cy =cy + size.height/2;
|
||||
if (core.Utils.isDefined(cx))
|
||||
{
|
||||
this._native.setAttribute('cx', cx);
|
||||
}
|
||||
|
||||
if (core.Utils.isDefined(cy))
|
||||
{
|
||||
this._native.setAttribute('cy', cy);
|
||||
}
|
||||
};
|
||||
|
||||
web2d.peer.svg.ElipsePeer.prototype.getPosition = function()
|
||||
{
|
||||
return this._position;
|
||||
};
|
||||
|
||||
109
web2d/src/main/javascript/peer/svg/Font.js
Normal file
109
web2d/src/main/javascript/peer/svg/Font.js
Normal file
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
web2d.peer.svg.Font = function()
|
||||
{
|
||||
this._size = 10;
|
||||
this._style = "normal";
|
||||
this._weight = "normal";
|
||||
};
|
||||
|
||||
web2d.peer.svg.Font.prototype.init = function(args)
|
||||
{
|
||||
if (core.Utils.isDefined(args.size))
|
||||
{
|
||||
this._size = parseInt(args.size);
|
||||
}
|
||||
if (core.Utils.isDefined(args.style))
|
||||
{
|
||||
this._style = args.style;
|
||||
}
|
||||
if (core.Utils.isDefined(args.weight))
|
||||
{
|
||||
this._weight = args.weight;
|
||||
}
|
||||
};
|
||||
|
||||
web2d.peer.svg.Font.prototype.getHtmlSize = function (scale)
|
||||
{
|
||||
var result = 0;
|
||||
if (this._size == 6)
|
||||
{
|
||||
result = this._size * scale.height * 43 / 32;
|
||||
}
|
||||
if (this._size == 8)
|
||||
{
|
||||
result = this._size * scale.height * 42 / 32;
|
||||
}
|
||||
else if (this._size == 10)
|
||||
{
|
||||
result = this._size * scale.height * 42 / 32;
|
||||
}
|
||||
else if (this._size == 15)
|
||||
{
|
||||
result = this._size * scale.height * 42 / 32;
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
web2d.peer.svg.Font.prototype.getGraphSize = function (scale)
|
||||
{
|
||||
return this._size * 43 / 32;
|
||||
};
|
||||
|
||||
web2d.peer.svg.Font.prototype.getSize = function ()
|
||||
{
|
||||
return parseInt(this._size);
|
||||
};
|
||||
|
||||
web2d.peer.svg.Font.prototype.getStyle = function ()
|
||||
{
|
||||
return this._style;
|
||||
};
|
||||
|
||||
web2d.peer.svg.Font.prototype.getWeight = function ()
|
||||
{
|
||||
return this._weight;
|
||||
};
|
||||
|
||||
web2d.peer.svg.Font.prototype.setSize = function (size)
|
||||
{
|
||||
this._size = size;
|
||||
};
|
||||
|
||||
web2d.peer.svg.Font.prototype.setStyle = function (style)
|
||||
{
|
||||
this._style = style;
|
||||
};
|
||||
|
||||
web2d.peer.svg.Font.prototype.setWeight = function (weight)
|
||||
{
|
||||
this._weight = weight;
|
||||
};
|
||||
|
||||
web2d.peer.svg.Font.prototype.getWidthMargin = function ()
|
||||
{
|
||||
var result = 0;
|
||||
if (this._size == 10 || this._size == 6)
|
||||
{
|
||||
result = 4;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
131
web2d/src/main/javascript/peer/svg/GroupPeer.js
Normal file
131
web2d/src/main/javascript/peer/svg/GroupPeer.js
Normal file
@@ -0,0 +1,131 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
web2d.peer.svg.GroupPeer = function()
|
||||
{
|
||||
var svgElement = window.document.createElementNS(this.svgNamespace, 'g');
|
||||
web2d.peer.svg.ElementPeer.call(this, svgElement);
|
||||
this._native.setAttribute("preserveAspectRatio", "none");
|
||||
this._coordSize = {width:1,height:1};
|
||||
this._native.setAttribute("focusable","true");
|
||||
this._position = {x:0,y:0};
|
||||
this._coordOrigin = {x:0,y:0};
|
||||
};
|
||||
|
||||
objects.extend(web2d.peer.svg.GroupPeer, web2d.peer.svg.ElementPeer);
|
||||
|
||||
/*web2d.peer.svg.GroupPeer.prototype.setPosition = function(cx, cy)
|
||||
{
|
||||
this._native.setAttribute("transform", "translate(" + parseInt(cx) + " " + parseInt(cy) + ")");
|
||||
};*/
|
||||
|
||||
web2d.peer.svg.GroupPeer.prototype.setCoordSize = function(width, height)
|
||||
{
|
||||
this._coordSize.width = width;
|
||||
this._coordSize.height = height;
|
||||
this.updateTransform();
|
||||
web2d.peer.utils.EventUtils.broadcastChangeEvent(this, "strokeStyle");
|
||||
};
|
||||
|
||||
web2d.peer.svg.GroupPeer.prototype.getCoordSize = function()
|
||||
{
|
||||
return {width:this._coordSize.width,height:this._coordSize.height};
|
||||
};
|
||||
|
||||
/**
|
||||
* http://www.w3.org/TR/SVG/coords.html#TransformAttribute
|
||||
* 7.6 The transform attribute
|
||||
*
|
||||
* The value of the transform attribute is a <transform-list>, which is defined as a list of transform definitions, which are applied in the order provided. The individual transform definitions are separated by whitespace and/or a comma. The available types of transform definitions include:
|
||||
*
|
||||
* * matrix(<a> <b> <c> <d> <e> <f>), which specifies a transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f].
|
||||
*
|
||||
* * translate(<tx> [<ty>]), which specifies a translation by tx and ty. If <ty> is not provided, it is assumed to be zero.
|
||||
*
|
||||
* * scale(<sx> [<sy>]), which specifies a scale operation by sx and sy. If <sy> is not provided, it is assumed to be equal to <sx>.
|
||||
*
|
||||
* * rotate(<rotate-angle> [<cx> <cy>]), which specifies a rotation by <rotate-angle> degrees about a given point.
|
||||
* If optional parameters <cx> and <cy> are not supplied, the rotate is about the origin of the current user coordinate system. The operation corresponds to the matrix [cos(a) sin(a) -sin(a) cos(a) 0 0].
|
||||
* If optional parameters <cx> and <cy> are supplied, the rotate is about the point (<cx>, <cy>). The operation represents the equivalent of the following specification: translate(<cx>, <cy>) rotate(<rotate-angle>) translate(-<cx>, -<cy>).
|
||||
*
|
||||
* * skewX(<skew-angle>), which specifies a skew transformation along the x-axis.
|
||||
*
|
||||
* * skewY(<skew-angle>), which specifies a skew transformation along the y-axis.
|
||||
**/
|
||||
|
||||
web2d.peer.svg.GroupPeer.prototype.updateTransform = function()
|
||||
{
|
||||
var sx = this._size.width / this._coordSize.width;
|
||||
var sy = this._size.height / this._coordSize.height;
|
||||
|
||||
var cx = this._position.x - this._coordOrigin.x * sx;
|
||||
var cy = this._position.y - this._coordOrigin.y * sy;
|
||||
|
||||
this._native.setAttribute("transform", "translate(" + cx + "," + cy + ") scale(" + sx + "," + sy + ")");
|
||||
};
|
||||
|
||||
web2d.peer.svg.GroupPeer.prototype.setCoordOrigin = function(x, y)
|
||||
{
|
||||
if (core.Utils.isDefined(x))
|
||||
{
|
||||
this._coordOrigin.x = x;
|
||||
}
|
||||
|
||||
if (core.Utils.isDefined(y))
|
||||
{
|
||||
this._coordOrigin.y = y;
|
||||
}
|
||||
this.updateTransform();
|
||||
};
|
||||
|
||||
web2d.peer.svg.GroupPeer.prototype.setSize = function(width, height)
|
||||
{
|
||||
web2d.peer.svg.GroupPeer.superClass.setSize.call(this, width, height);
|
||||
this.updateTransform();
|
||||
};
|
||||
|
||||
web2d.peer.svg.GroupPeer.prototype.setPosition = function(x, y)
|
||||
{
|
||||
if (core.Utils.isDefined(x))
|
||||
{
|
||||
this._position.x = parseInt(x);
|
||||
}
|
||||
|
||||
if (core.Utils.isDefined(y))
|
||||
{
|
||||
this._position.y = parseInt(y);
|
||||
}
|
||||
this.updateTransform();
|
||||
};
|
||||
|
||||
web2d.peer.svg.GroupPeer.prototype.getPosition = function()
|
||||
{
|
||||
return {x:this._position.x,y:this._position.y};
|
||||
};
|
||||
|
||||
web2d.peer.svg.GroupPeer.prototype.appendChild = function(child)
|
||||
{
|
||||
web2d.peer.svg.GroupPeer.superClass.appendChild.call(this, child);
|
||||
web2d.peer.utils.EventUtils.broadcastChangeEvent(child, "onChangeCoordSize");
|
||||
};
|
||||
|
||||
web2d.peer.svg.GroupPeer.prototype.getCoordOrigin = function ()
|
||||
{
|
||||
return {x:this._coordOrigin.x, y:this._coordOrigin.y};
|
||||
};
|
||||
52
web2d/src/main/javascript/peer/svg/ImagePeer.js
Normal file
52
web2d/src/main/javascript/peer/svg/ImagePeer.js
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
web2d.peer.svg.ImagePeer = function()
|
||||
{
|
||||
var svgElement = window.document.createElementNS(this.svgNamespace, 'image');
|
||||
web2d.peer.svg.ElementPeer.call(this, svgElement);
|
||||
this._position = {x:0,y:0};
|
||||
this._href="";
|
||||
};
|
||||
|
||||
objects.extend(web2d.peer.svg.ImagePeer, web2d.peer.svg.ElementPeer);
|
||||
|
||||
web2d.peer.svg.ImagePeer.prototype.setPosition = function(x, y)
|
||||
{
|
||||
this._position = {x:x, y:y};
|
||||
this._native.setAttribute('y', y);
|
||||
this._native.setAttribute('x', x);
|
||||
};
|
||||
|
||||
|
||||
web2d.peer.svg.ImagePeer.prototype.getPosition = function()
|
||||
{
|
||||
return this._position;
|
||||
};
|
||||
|
||||
web2d.peer.svg.ImagePeer.prototype.setHref = function(url)
|
||||
{
|
||||
this._native.setAttributeNS(this.linkNamespace, "href", url);
|
||||
this._href = url;
|
||||
};
|
||||
|
||||
web2d.peer.svg.ImagePeer.prototype.getHref = function()
|
||||
{
|
||||
return this._href;
|
||||
};
|
||||
55
web2d/src/main/javascript/peer/svg/LinePeer.js
Normal file
55
web2d/src/main/javascript/peer/svg/LinePeer.js
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
web2d.peer.svg.LinePeer = function()
|
||||
{
|
||||
var svgElement = window.document.createElementNS(this.svgNamespace, 'line');
|
||||
web2d.peer.svg.ElementPeer.call(this, svgElement);
|
||||
this.attachChangeEventListener("strokeStyle", web2d.peer.svg.ElementPeer.prototype.updateStrokeStyle);
|
||||
};
|
||||
|
||||
objects.extend(web2d.peer.svg.LinePeer, web2d.peer.svg.ElementPeer);
|
||||
|
||||
web2d.peer.svg.LinePeer.prototype.setFrom = function(x1, y1)
|
||||
{
|
||||
this._native.setAttribute('x1', x1);
|
||||
this._native.setAttribute('y1', y1);
|
||||
};
|
||||
|
||||
web2d.peer.svg.LinePeer.prototype.setTo = function(x2, y2)
|
||||
{
|
||||
this._native.setAttribute('x2', x2);
|
||||
this._native.setAttribute('y2', y2);
|
||||
};
|
||||
|
||||
/*
|
||||
* http://www.zvon.org/HowTo/Output/howto_jj_svg_27.html?at=marker-end
|
||||
*/
|
||||
web2d.peer.svg.LinePeer.prototype.setArrowStyle = function(startStyle, endStyle)
|
||||
{
|
||||
if (core.Utils.isDefined(startStyle))
|
||||
{
|
||||
// Todo: This must be implemented ...
|
||||
}
|
||||
|
||||
if (core.Utils.isDefined(endStyle))
|
||||
{
|
||||
// Todo: This must be implemented ...
|
||||
}
|
||||
};
|
||||
122
web2d/src/main/javascript/peer/svg/PolyLinePeer.js
Normal file
122
web2d/src/main/javascript/peer/svg/PolyLinePeer.js
Normal file
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
web2d.peer.svg.PolyLinePeer = function()
|
||||
{
|
||||
var svgElement = window.document.createElementNS(this.svgNamespace, 'polyline');
|
||||
web2d.peer.svg.ElementPeer.call(this, svgElement);
|
||||
this.setFill("none");
|
||||
this.breakDistance = 10;
|
||||
};
|
||||
|
||||
objects.extend(web2d.peer.svg.PolyLinePeer, web2d.peer.svg.ElementPeer);
|
||||
|
||||
web2d.peer.svg.PolyLinePeer.prototype.setFrom = function(x1, y1)
|
||||
{
|
||||
this._x1 = x1;
|
||||
this._y1 = y1;
|
||||
this._updatePath();
|
||||
};
|
||||
|
||||
web2d.peer.svg.PolyLinePeer.prototype.setTo = function(x2, y2)
|
||||
{
|
||||
this._x2 = x2;
|
||||
this._y2 = y2;
|
||||
this._updatePath();
|
||||
};
|
||||
|
||||
web2d.peer.svg.PolyLinePeer.prototype.setStrokeWidth = function(width)
|
||||
{
|
||||
this._native.setAttribute('stroke-width', width);
|
||||
};
|
||||
|
||||
web2d.peer.svg.PolyLinePeer.prototype.setColor = function(color)
|
||||
{
|
||||
this._native.setAttribute('stroke', color);
|
||||
};
|
||||
|
||||
web2d.peer.svg.PolyLinePeer.prototype.setStyle = function(style)
|
||||
{
|
||||
this._style = style;
|
||||
this._updatePath();
|
||||
};
|
||||
|
||||
web2d.peer.svg.PolyLinePeer.prototype.getStyle = function()
|
||||
{
|
||||
return this._style;
|
||||
};
|
||||
|
||||
web2d.peer.svg.PolyLinePeer.prototype._updatePath = function()
|
||||
{
|
||||
if (this._style == "Curved")
|
||||
{
|
||||
this._updateMiddleCurvePath();
|
||||
}
|
||||
else if (this._style == "Straight")
|
||||
{
|
||||
this._updateStraightPath();
|
||||
}
|
||||
else
|
||||
{
|
||||
this._updateCurvePath();
|
||||
}
|
||||
};
|
||||
|
||||
web2d.peer.svg.PolyLinePeer.prototype._updateStraightPath = function()
|
||||
{
|
||||
if (core.Utils.isDefined(this._x1) && core.Utils.isDefined(this._x2) && core.Utils.isDefined(this._y1) && core.Utils.isDefined(this._y2))
|
||||
{
|
||||
this.buildStraightPath(this.breakDistance, this._x1, this._y1, this._x2, this._y2);
|
||||
this._native.setAttribute('points', path);
|
||||
}
|
||||
};
|
||||
|
||||
web2d.peer.svg.PolyLinePeer.prototype._updateMiddleCurvePath = function()
|
||||
{
|
||||
var x1 = this._x1;
|
||||
var y1 = this._y1;
|
||||
var x2 = this._x2;
|
||||
var y2 = this._y2;
|
||||
if (core.Utils.isDefined(x1) && core.Utils.isDefined(x2) && core.Utils.isDefined(y1) && core.Utils.isDefined(y2))
|
||||
{
|
||||
var diff = x2 - x1;
|
||||
var middlex = (diff / 2) + x1;
|
||||
var signx = 1;
|
||||
var signy = 1;
|
||||
if (diff < 0)
|
||||
{
|
||||
signx = -1;
|
||||
}
|
||||
if (y2 < y1)
|
||||
{
|
||||
signy = -1;
|
||||
}
|
||||
var path = x1 + ", " + y1 + " " + (middlex - 10 * signx) + ", " + y1 + " " + middlex + ", " + (y1 + 10 * signy) + " " + middlex + ", " + (y2 - 10 * signy) + " " + (middlex + 10 * signx) + ", " + y2 + " " + x2 + ", " + y2;
|
||||
this._native.setAttribute('points', path);
|
||||
}
|
||||
};
|
||||
|
||||
web2d.peer.svg.PolyLinePeer.prototype._updateCurvePath = function()
|
||||
{
|
||||
if (core.Utils.isDefined(this._x1) && core.Utils.isDefined(this._x2) && core.Utils.isDefined(this._y1) && core.Utils.isDefined(this._y2))
|
||||
{
|
||||
var path = web2d.PolyLine.buildCurvedPath(this.breakDistance, this._x1, this._y1, this._x2, this._y2);
|
||||
this._native.setAttribute('points', path);
|
||||
}
|
||||
};
|
||||
64
web2d/src/main/javascript/peer/svg/RectPeer.js
Normal file
64
web2d/src/main/javascript/peer/svg/RectPeer.js
Normal file
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
/**
|
||||
* http://www.w3.org/TR/SVG/shapes.html#RectElement
|
||||
*/
|
||||
web2d.peer.svg.RectPeer = function(arc)
|
||||
{
|
||||
var svgElement = window.document.createElementNS(this.svgNamespace, 'rect');
|
||||
web2d.peer.svg.ElementPeer.call(this, svgElement);
|
||||
this._arc = arc;
|
||||
this.attachChangeEventListener("strokeStyle", web2d.peer.svg.ElementPeer.prototype.updateStrokeStyle);
|
||||
};
|
||||
|
||||
objects.extend(web2d.peer.svg.RectPeer, web2d.peer.svg.ElementPeer);
|
||||
|
||||
web2d.peer.svg.RectPeer.prototype.setPosition = function(x, y)
|
||||
{
|
||||
if (core.Utils.isDefined(x))
|
||||
{
|
||||
this._native.setAttribute('x', parseInt(x));
|
||||
}
|
||||
if (core.Utils.isDefined(y))
|
||||
{
|
||||
this._native.setAttribute('y', parseInt(y));
|
||||
}
|
||||
};
|
||||
|
||||
web2d.peer.svg.RectPeer.prototype.getPosition = function()
|
||||
{
|
||||
var x = this._native.getAttribute('x');
|
||||
var y = this._native.getAttribute('y');
|
||||
return {x:parseInt(x),y:parseInt(y)};
|
||||
};
|
||||
|
||||
web2d.peer.svg.RectPeer.prototype.setSize = function(width, height)
|
||||
{
|
||||
web2d.peer.svg.RectPeer.superClass.setSize.call(this, width, height);
|
||||
|
||||
var min = width < height?width:height;
|
||||
if (this._arc)
|
||||
{
|
||||
// Transform percentages to SVG format.
|
||||
var arc = (min / 2) * this._arc;
|
||||
this._native.setAttribute('rx', arc);
|
||||
this._native.setAttribute('ry', arc);
|
||||
}
|
||||
};
|
||||
36
web2d/src/main/javascript/peer/svg/TahomaFont.js
Normal file
36
web2d/src/main/javascript/peer/svg/TahomaFont.js
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
web2d.peer.svg.TahomaFont = function()
|
||||
{
|
||||
web2d.peer.svg.Font.call(this);
|
||||
this._fontFamily="tahoma";
|
||||
};
|
||||
|
||||
objects.extend(web2d.peer.svg.TahomaFont, web2d.peer.svg.Font);
|
||||
|
||||
web2d.peer.svg.TahomaFont.prototype.getFontFamily=function ()
|
||||
{
|
||||
return this._fontFamily;
|
||||
};
|
||||
|
||||
web2d.peer.svg.TahomaFont.prototype.getFont=function ()
|
||||
{
|
||||
return web2d.Font.TAHOMA;
|
||||
};
|
||||
184
web2d/src/main/javascript/peer/svg/TextPeer.js
Normal file
184
web2d/src/main/javascript/peer/svg/TextPeer.js
Normal file
@@ -0,0 +1,184 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
web2d.peer.svg.TextPeer = function()
|
||||
{
|
||||
var svgElement = window.document.createElementNS(this.svgNamespace, 'text');
|
||||
web2d.peer.svg.ElementPeer.call(this, svgElement);
|
||||
this._native.setAttribute("focusable", "true");
|
||||
this._position = {x:0,y:0};
|
||||
this._font = new web2d.Font("Arial", this);
|
||||
};
|
||||
|
||||
objects.extend(web2d.peer.svg.TextPeer, web2d.peer.svg.ElementPeer);
|
||||
|
||||
//todo: use ths method to specify the maximum size of the text box
|
||||
/*web2d.web2d.peer.svg.TextPeer.prototype.setSize = function(width, height)
|
||||
{
|
||||
web2d.web2d.peer.svg.TextPeer.superClass.setSize.call(this,width,height);
|
||||
this._native.setAttribute('rx', width / 2);
|
||||
this._native.setAttribute('ry', height /ose 2);
|
||||
};
|
||||
*/
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.appendChild = function(element)
|
||||
{
|
||||
this._native.appendChild(element._native);
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.setText = function(text)
|
||||
{
|
||||
text = core.Utils.escapeInvalidTags(text);
|
||||
var child = this._native.firstChild;
|
||||
if (child)
|
||||
{
|
||||
this._native.removeChild(child);
|
||||
}
|
||||
this._text = text;
|
||||
var textNode = window.document.createTextNode(text);
|
||||
this._native.appendChild(textNode);
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.getText = function()
|
||||
{
|
||||
return this._text;
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.setPosition = function(x, y)
|
||||
{
|
||||
this._position = {x:x, y:y};
|
||||
var size = parseInt(this._font.getSize());
|
||||
this._native.setAttribute('y', y + size);
|
||||
//y+size/2
|
||||
this._native.setAttribute('x', x);
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.getPosition = function()
|
||||
{
|
||||
return this._position;
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.setFont = function(font, size, style, weight)
|
||||
{
|
||||
if (core.Utils.isDefined(font))
|
||||
{
|
||||
this._font = new web2d.Font(font, this);
|
||||
}
|
||||
if (core.Utils.isDefined(style))
|
||||
{
|
||||
this._font.setStyle(style);
|
||||
}
|
||||
if (core.Utils.isDefined(weight))
|
||||
{
|
||||
this._font.setWeight(weight);
|
||||
}
|
||||
if (core.Utils.isDefined(size))
|
||||
{
|
||||
this._font.setSize(size);
|
||||
}
|
||||
this._updateFontStyle();
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype._updateFontStyle = function()
|
||||
{
|
||||
this._native.setAttribute('font-family', this._font.getFontFamily());
|
||||
this._native.setAttribute('font-size', this._font.getGraphSize());
|
||||
this._native.setAttribute('font-style', this._font.getStyle());
|
||||
this._native.setAttribute('font-weight', this._font.getWeight());
|
||||
|
||||
var scale = this._font.getFontScale();
|
||||
this._native.xFontScale = scale.toFixed(1);
|
||||
|
||||
};
|
||||
web2d.peer.svg.TextPeer.prototype.setColor = function(color)
|
||||
{
|
||||
this._native.setAttribute('fill', color);
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.getColor = function()
|
||||
{
|
||||
return this._native.getAttribute('fill');
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.setTextSize = function (size)
|
||||
{
|
||||
this._font.setSize(size);
|
||||
this._updateFontStyle();
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.setContentSize = function(width, height)
|
||||
{
|
||||
this._native.xTextSize = width.toFixed(1) + "," + height.toFixed(1);
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.setStyle = function (style)
|
||||
{
|
||||
this._font.setStyle(style);
|
||||
this._updateFontStyle();
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.setWeight = function (weight)
|
||||
{
|
||||
this._font.setWeight(weight);
|
||||
this._updateFontStyle();
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.setFontFamily = function (family)
|
||||
{
|
||||
var oldFont = this._font;
|
||||
this._font = new web2d.Font(family, this);
|
||||
this._font.setSize(oldFont.getSize());
|
||||
this._font.setStyle(oldFont.getStyle());
|
||||
this._font.setWeight(oldFont.getWeight());
|
||||
this._updateFontStyle();
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.getFont = function ()
|
||||
{
|
||||
return {
|
||||
font:this._font.getFont(),
|
||||
size:parseInt(this._font.getSize()),
|
||||
style:this._font.getStyle(),
|
||||
weight:this._font.getWeight()
|
||||
};
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.setSize = function (size)
|
||||
{
|
||||
this._font.setSize(size);
|
||||
this._updateFontStyle();
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.getWidth = function ()
|
||||
{
|
||||
var width = parseInt(this._native.getComputedTextLength());
|
||||
width = width + this._font.getWidthMargin();
|
||||
return width;
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.getHeight = function ()
|
||||
{
|
||||
return this._font.getGraphSize();
|
||||
};
|
||||
|
||||
web2d.peer.svg.TextPeer.prototype.getHtmlFontSize = function ()
|
||||
{
|
||||
return this._font.getHtmlSize();
|
||||
};
|
||||
|
||||
36
web2d/src/main/javascript/peer/svg/TimesFont.js
Normal file
36
web2d/src/main/javascript/peer/svg/TimesFont.js
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
web2d.peer.svg.TimesFont = function()
|
||||
{
|
||||
web2d.peer.svg.Font.call(this);
|
||||
this._fontFamily="times";
|
||||
};
|
||||
|
||||
objects.extend(web2d.peer.svg.TimesFont, web2d.peer.svg.Font);
|
||||
|
||||
web2d.peer.svg.TimesFont.prototype.getFontFamily=function ()
|
||||
{
|
||||
return this._fontFamily;
|
||||
};
|
||||
|
||||
web2d.peer.svg.TimesFont.prototype.getFont=function ()
|
||||
{
|
||||
return web2d.Font.TIMES;
|
||||
};
|
||||
36
web2d/src/main/javascript/peer/svg/VerdanaFont.js
Normal file
36
web2d/src/main/javascript/peer/svg/VerdanaFont.js
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
web2d.peer.svg.VerdanaFont = function()
|
||||
{
|
||||
web2d.peer.svg.Font.call(this);
|
||||
this._fontFamily="verdana";
|
||||
};
|
||||
|
||||
objects.extend(web2d.peer.svg.VerdanaFont, web2d.peer.svg.Font);
|
||||
|
||||
web2d.peer.svg.VerdanaFont.prototype.getFontFamily=function ()
|
||||
{
|
||||
return this._fontFamily;
|
||||
};
|
||||
|
||||
web2d.peer.svg.VerdanaFont.prototype.getFont=function ()
|
||||
{
|
||||
return web2d.Font.VERDANA;
|
||||
};
|
||||
122
web2d/src/main/javascript/peer/svg/WorkspacePeer.js
Normal file
122
web2d/src/main/javascript/peer/svg/WorkspacePeer.js
Normal file
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $Id: file 64488 2006-03-10 17:32:09Z paulo $
|
||||
*/
|
||||
|
||||
web2d.peer.svg.WorkspacePeer = function(element)
|
||||
{
|
||||
this._element = element;
|
||||
var svgElement = window.document.createElementNS(this.svgNamespace, 'svg');
|
||||
web2d.peer.svg.ElementPeer.call(this, svgElement);
|
||||
this._native.setAttribute("focusable", "true");
|
||||
this._native.setAttribute("id", "workspace");
|
||||
};
|
||||
|
||||
objects.extend(web2d.peer.svg.WorkspacePeer, web2d.peer.svg.ElementPeer);
|
||||
|
||||
|
||||
/**
|
||||
* http://www.w3.org/TR/SVG/coords.html 7.7 The viewBox attribute
|
||||
* It is often desirable to specify that a given set of graphics stretch to fit a particular container element. The viewBox attribute provides this capability.
|
||||
*
|
||||
* All elements that establish a new viewport (see elements that establish viewports), plus the 'marker', 'pattern' and 'view' elements have attribute viewBox. The value of the viewBox attribute is a list of four numbers <min-x>, <min-y>, <width> and <height>, separated by whitespace and/or a comma, which specify a rectangle in user space which should be mapped to the bounds of the viewport established by the given element, taking into account attribute preserveAspectRatio. If specified, an additional transformation is applied to all descendants of the given element to achieve the specified effect.
|
||||
*
|
||||
* A negative value for <width> or <height> is an error (see Error processing). A value of zero disables rendering of the element.
|
||||
*
|
||||
*/
|
||||
|
||||
web2d.peer.svg.WorkspacePeer.prototype.setCoordSize = function(width, height)
|
||||
{
|
||||
var viewBox = this._native.getAttribute('viewBox');
|
||||
var coords = [0,0,0,0];
|
||||
if (viewBox != null)
|
||||
{
|
||||
coords = viewBox.split(/ /);
|
||||
}
|
||||
if (core.Utils.isDefined(width))
|
||||
{
|
||||
coords[2] = width;
|
||||
}
|
||||
|
||||
if (core.Utils.isDefined(height))
|
||||
{
|
||||
coords[3] = height;
|
||||
}
|
||||
|
||||
this._native.setAttribute('viewBox', coords.join(" "));
|
||||
this._native.setAttribute("preserveAspectRatio", "none");
|
||||
web2d.peer.utils.EventUtils.broadcastChangeEvent(this, "strokeStyle");
|
||||
};
|
||||
|
||||
web2d.peer.svg.WorkspacePeer.prototype.getCoordSize = function()
|
||||
{
|
||||
var viewBox = this._native.getAttribute('viewBox');
|
||||
var coords = [1,1,1,1];
|
||||
if (viewBox != null)
|
||||
{
|
||||
coords = viewBox.split(/ /);
|
||||
}
|
||||
return {width:coords[2],height:coords[3]};
|
||||
};
|
||||
|
||||
web2d.peer.svg.WorkspacePeer.prototype.setCoordOrigin = function(x, y)
|
||||
{
|
||||
var viewBox = this._native.getAttribute('viewBox');
|
||||
|
||||
// ViewBox min-x ,min-y by default initializated with 0 and 0.
|
||||
var coords = [0,0,0,0];
|
||||
if (viewBox != null)
|
||||
{
|
||||
coords = viewBox.split(/ /);
|
||||
}
|
||||
|
||||
if (core.Utils.isDefined(x))
|
||||
{
|
||||
coords[0] = x;
|
||||
}
|
||||
|
||||
if (core.Utils.isDefined(y))
|
||||
{
|
||||
coords[1] = y;
|
||||
}
|
||||
|
||||
this._native.setAttribute('viewBox', coords.join(" "));
|
||||
};
|
||||
|
||||
web2d.peer.svg.WorkspacePeer.prototype.appendChild = function(child)
|
||||
{
|
||||
web2d.peer.svg.WorkspacePeer.superClass.appendChild.call(this, child);
|
||||
web2d.peer.utils.EventUtils.broadcastChangeEvent(child, "onChangeCoordSize");
|
||||
};
|
||||
|
||||
web2d.peer.svg.WorkspacePeer.prototype.getCoordOrigin = function(child)
|
||||
{
|
||||
var viewBox = this._native.getAttribute('viewBox');
|
||||
var coords = [1,1,1,1];
|
||||
if (viewBox != null)
|
||||
{
|
||||
coords = viewBox.split(/ /);
|
||||
}
|
||||
var x = parseFloat(coords[0]);
|
||||
var y = parseFloat(coords[1]);
|
||||
return {x:x,y:y};
|
||||
};
|
||||
|
||||
web2d.peer.svg.WorkspacePeer.prototype.getPosition = function()
|
||||
{
|
||||
return {x:0,y:0};
|
||||
};
|
||||
Reference in New Issue
Block a user