Refactor Web2D to use mootool classes.

This commit is contained in:
Paulo Veiga 2011-08-30 14:21:55 -03:00
parent 7f02ed5cf4
commit e437e0e329
30 changed files with 2344 additions and 2599 deletions

View File

@ -32,27 +32,23 @@ mindplot.ShirinkConnector = new Class({
var actionDispatcher = mindplot.ActionDispatcher.getInstance(); var actionDispatcher = mindplot.ActionDispatcher.getInstance();
actionDispatcher.shrinkBranch([topicId], collapse); actionDispatcher.shrinkBranch([topicId], collapse);
var e = new Event(event).stop(); event.stopPropagation();
e.preventDefault();
}); });
elipse.addEvent('mousedown', function(event) { elipse.addEvent('mousedown', function(event) {
// Avoid node creation ... // Avoid node creation ...
var e = new Event(event).stop(); event.stopPropagation();
e.preventDefault();
}); });
elipse.addEvent('dblclick', function(event) { elipse.addEvent('dblclick', function(event) {
// Avoid node creation ... // Avoid node creation ...
event = new Event(event).stop(); event.stopPropagation();
event.preventDefault();
}); });
elipse.addEvent('mouseover', function(event) { elipse.addEvent('mouseover', function(event) {
this.setFill('rgb(153, 0, 255)'); elipse.setFill('rgb(153, 0, 255)');
}); });
elipse.addEvent('mouseout', function(event) { elipse.addEvent('mouseout', function(event) {

View File

@ -17,48 +17,38 @@
* *
*/ */
web2d.Arrow = function(attributes) web2d.Arrow = new Class({
{ Extends: web2d.Element,
initialize : function(attributes) {
var peer = web2d.peer.Toolkit.createArrow(); var peer = web2d.peer.Toolkit.createArrow();
var defaultAttributes = {strokeColor:'black',strokeWidth:1,strokeStyle:'solid',strokeOpacity:1}; var defaultAttributes = {strokeColor:'black',strokeWidth:1,strokeStyle:'solid',strokeOpacity:1};
for (var key in attributes) for (var key in attributes) {
{
defaultAttributes[key] = attributes[key]; defaultAttributes[key] = attributes[key];
} }
web2d.Element.call(this, peer, defaultAttributes); this.parent(peer, defaultAttributes);
}; },
objects.extend(web2d.Arrow, web2d.Element);
web2d.Arrow.prototype.getType = function() getType : function() {
{
return "Arrow"; return "Arrow";
}; },
web2d.Arrow.prototype.setFrom = function(x,y) setFrom : function(x, y) {
{
this._peer.setFrom(x, y); this._peer.setFrom(x, y);
}; },
web2d.Arrow.prototype.setControlPoint = function (point) setControlPoint : function (point) {
{
this._peer.setControlPoint(point); this._peer.setControlPoint(point);
}; },
web2d.Arrow.prototype.setStrokeColor = function (color) setStrokeColor : function (color) {
{
this._peer.setStrokeColor(color); this._peer.setStrokeColor(color);
}; },
web2d.Arrow.prototype.setStrokeWidth = function(width) setStrokeWidth : function(width) {
{
this._peer.setStrokeWidth(width); this._peer.setStrokeWidth(width);
}; },
web2d.Arrow.prototype.setDashed = function(isDashed, length, spacing){ setDashed : function(isDashed, length, spacing) {
this._peer.setDashed(isDashed, length, spacing); this._peer.setDashed(isDashed, length, spacing);
}; }
});
web2d.Arrow.prototype.reDraw = function()
{
this._peer._redraw();
};

View File

@ -16,103 +16,98 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.CurvedLine = function(attributes) web2d.CurvedLine = new Class({
{ Extends: web2d.Element,
initialize: function(attributes) {
var peer = web2d.peer.Toolkit.createCurvedLine(); var peer = web2d.peer.Toolkit.createCurvedLine();
var defaultAttributes = {strokeColor:'blue',strokeWidth:1,strokeStyle:'solid',strokeOpacity:1}; var defaultAttributes = {strokeColor:'blue',strokeWidth:1,strokeStyle:'solid',strokeOpacity:1};
for (var key in attributes) for (var key in attributes) {
{
defaultAttributes[key] = attributes[key]; defaultAttributes[key] = attributes[key];
} }
web2d.Element.call(this, peer, defaultAttributes); this.parent(peer, defaultAttributes);
}; },
objects.extend(web2d.CurvedLine, web2d.Element);
web2d.CurvedLine.prototype.getType = function() getType : function() {
{
return "CurvedLine"; return "CurvedLine";
}; },
web2d.CurvedLine.prototype.setFrom = function(x, y) setFrom : function(x, y) {
{
this._peer.setFrom(x, y); this._peer.setFrom(x, y);
}; },
web2d.CurvedLine.prototype.setTo = function(x, y) setTo : function(x, y) {
{
this._peer.setTo(x, y); this._peer.setTo(x, y);
}; },
web2d.CurvedLine.prototype.getFrom = function() getFrom : function() {
{
return this._peer.getFrom(); return this._peer.getFrom();
}; },
web2d.CurvedLine.prototype.getTo = function() getTo : function() {
{
return this._peer.getTo(); return this._peer.getTo();
}; },
web2d.CurvedLine.prototype.setShowEndArrow = function(visible){ setShowEndArrow : function(visible) {
this._peer.setShowEndArrow(visible); this._peer.setShowEndArrow(visible);
}; },
web2d.CurvedLine.prototype.isShowEndArrow = function(){ isShowEndArrow : function() {
return this._peer.isShowEndArrow(); return this._peer.isShowEndArrow();
}; },
web2d.CurvedLine.prototype.setShowStartArrow = function(visible){ setShowStartArrow : function(visible) {
this._peer.setShowStartArrow(visible); this._peer.setShowStartArrow(visible);
}; },
web2d.CurvedLine.prototype.isShowStartArrow = function(){ isShowStartArrow : function() {
return this._peer.isShowStartArrow(); return this._peer.isShowStartArrow();
}; },
web2d.CurvedLine.prototype.setSrcControlPoint = function(control){ setSrcControlPoint : function(control) {
this._peer.setSrcControlPoint(control); this._peer.setSrcControlPoint(control);
}; },
web2d.CurvedLine.prototype.setDestControlPoint = function(control){ setDestControlPoint : function(control) {
this._peer.setDestControlPoint(control); this._peer.setDestControlPoint(control);
}; },
web2d.CurvedLine.prototype.getControlPoints = function(){ getControlPoints : function() {
return this._peer.getControlPoints(); return this._peer.getControlPoints();
}; },
web2d.CurvedLine.prototype.isSrcControlPointCustom = function(){ isSrcControlPointCustom : function() {
return this._peer.isSrcControlPointCustom(); return this._peer.isSrcControlPointCustom();
}; },
web2d.CurvedLine.prototype.isDestControlPointCustom = function(){ isDestControlPointCustom : function() {
return this._peer.isDestControlPointCustom(); return this._peer.isDestControlPointCustom();
}; },
web2d.CurvedLine.prototype.setIsSrcControlPointCustom = function(isCustom){ setIsSrcControlPointCustom : function(isCustom) {
this._peer.setIsSrcControlPointCustom(isCustom); this._peer.setIsSrcControlPointCustom(isCustom);
}; },
web2d.CurvedLine.prototype.setIsDestControlPointCustom = function(isCustom){ setIsDestControlPointCustom : function(isCustom) {
this._peer.setIsDestControlPointCustom(isCustom); this._peer.setIsDestControlPointCustom(isCustom);
}; },
web2d.CurvedLine.prototype.updateLine= function(avoidControlPointFix){ updateLine : function(avoidControlPointFix) {
return this._peer.updateLine(avoidControlPointFix); return this._peer.updateLine(avoidControlPointFix);
}; },
web2d.CurvedLine.prototype.setStyle = function(style){ setStyle : function(style) {
this._peer.setLineStyle(style); this._peer.setLineStyle(style);
}; },
web2d.CurvedLine.prototype.getStyle = function(){ getStyle : function() {
return this._peer.getLineStyle(); return this._peer.getLineStyle();
}; },
web2d.CurvedLine.prototype.setDashed = function(length,spacing){ setDashed : function(length, spacing) {
this._peer.setDashed(length, spacing); this._peer.setDashed(length, spacing);
}; }
});
web2d.CurvedLine.SIMPLE_LINE = false; web2d.CurvedLine.SIMPLE_LINE = false;
web2d.CurvedLine.NICE_LINE = true; web2d.CurvedLine.NICE_LINE = true;

View File

@ -16,7 +16,8 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.Element = function(peer, attributes) { web2d.Element = new Class({
initialize : function(peer, attributes) {
this._peer = peer; this._peer = peer;
if (peer == null) { if (peer == null) {
throw "Element peer can not be null"; throw "Element peer can not be null";
@ -26,11 +27,9 @@ web2d.Element = function(peer, attributes) {
if ($defined(attributes)) { if ($defined(attributes)) {
this._initialize(attributes); this._initialize(attributes);
} }
}; },
web2d.Element.prototype._SIGNATURE_MULTIPLE_ARGUMENTS = -1; _initialize : function(attributes) {
web2d.Element.prototype._initialize = function(attributes) {
var batchExecute = {}; var batchExecute = {};
// Collect arguments ... // Collect arguments ...
@ -41,9 +40,9 @@ web2d.Element.prototype._initialize = function(attributes) {
funcArgs = []; funcArgs = [];
} }
var signature = this._propertyNameToSignature[key]; var signature = web2d.Element._propertyNameToSignature[key];
var argPositions = signature[1]; var argPositions = signature[1];
if (argPositions != this._SIGNATURE_MULTIPLE_ARGUMENTS) { if (argPositions != web2d.Element._SIGNATURE_MULTIPLE_ARGUMENTS) {
funcArgs[argPositions] = attributes[key]; funcArgs[argPositions] = attributes[key];
} else { } else {
funcArgs = attributes[key].split(' '); funcArgs = attributes[key].split(' ');
@ -59,22 +58,21 @@ web2d.Element.prototype._initialize = function(attributes) {
} }
func.apply(this, batchExecute[key]); func.apply(this, batchExecute[key]);
} }
}; },
web2d.Element.prototype.setSize = function(width, height) { setSize : function(width, height) {
this._peer.setSize(width, height); this._peer.setSize(width, height);
}; },
web2d.Element.prototype.setPosition = function(cx, cy) { setPosition : function(cx, cy) {
this._peer.setPosition(cx, cy); this._peer.setPosition(cx, cy);
}; },
web2d.Element.prototype._supportedEvents = ["click","dblclick","mousemove","mouseout","mouseover","mousedown","mouseup"];
web2d.Element.prototype.positionRelativeTo = function(elem, options) { positionRelativeTo : function(elem, options) {
this._peer.positionRelativeTo(elem, options); this._peer.positionRelativeTo(elem, options);
}; },
/** /**
* Allows the registration of event listeners on the event target. * Allows the registration of event listeners on the event target.
@ -86,9 +84,9 @@ web2d.Element.prototype.positionRelativeTo = function(elem, options) {
* The following events types are supported: * The following events types are supported:
* *
*/ */
web2d.Element.prototype.addEvent = function(type, listener) { addEvent : function(type, listener) {
this._peer.addEvent(type, listener); this._peer.addEvent(type, listener);
}; },
/** /**
* *
* Allows the removal of event listeners from the event target. * Allows the removal of event listeners from the event target.
@ -100,37 +98,37 @@ web2d.Element.prototype.addEvent = function(type, listener) {
* The listener parameter takes an interface implemented by the user which contains the methods to be called when the event occurs. * The listener parameter takes an interface implemented by the user which contains the methods to be called when the event occurs.
* This interace will be invoked passing an event as argument and the 'this' referece in the function will be the element. * This interace will be invoked passing an event as argument and the 'this' referece in the function will be the element.
*/ */
web2d.Element.prototype.removeEvent = function(type, listener) { removeEvent : function(type, listener) {
this._peer.removeEvent(type, listener); this._peer.removeEvent(type, listener);
}; },
/** /**
* /* * /*
* Returns element type name. * Returns element type name.
*/ */
web2d.Element.prototype.getType = function() { getType : function() {
throw "Not implemeneted yet. This method must be implemented by all the inherited objects."; throw "Not implemeneted yet. This method must be implemented by all the inherited objects.";
}; },
/** /**
* Todo: Doc * Todo: Doc
*/ */
web2d.Element.prototype.getFill = function() { getFill : function() {
return this._peer.getFill(); return this._peer.getFill();
}; },
/** /**
* Used to define the fill element color and element opacity. * Used to define the fill element color and element opacity.
* color: Fill color * color: Fill color
* opacity: Opacity of the fill. It must be less than 1. * opacity: Opacity of the fill. It must be less than 1.
*/ */
web2d.Element.prototype.setFill = function(color, opacity) { setFill : function(color, opacity) {
this._peer.setFill(color, opacity); this._peer.setFill(color, opacity);
}; },
web2d.Element.prototype.getPosition = function() { getPosition : function() {
return this._peer.getPosition(); return this._peer.getPosition();
}; },
/* /*
* Defines the element stroke properties. * Defines the element stroke properties.
@ -139,14 +137,138 @@ web2d.Element.prototype.getPosition = function() {
* color: stroke color * color: stroke color
* opacity: stroke visibility * opacity: stroke visibility
*/ */
web2d.Element.prototype.setStroke = function(width, style, color, opacity) { setStroke : function(width, style, color, opacity) {
if (style != null && style != undefined && style != 'dash' && style != 'dot' && style != 'solid' && style != 'longdash' && style != "dashdot") { if (style != null && style != undefined && style != 'dash' && style != 'dot' && style != 'solid' && style != 'longdash' && style != "dashdot") {
throw "Unsupported stroke style: '" + style + "'"; throw "Unsupported stroke style: '" + style + "'";
} }
this._peer.setStroke(width, style, color, opacity); this._peer.setStroke(width, style, color, opacity);
}; },
web2d.Element.prototype._propertyNameToSignature =
_attributeNameToFuncName : function(attributeKey, prefix) {
var signature = web2d.Element._propertyNameToSignature[attributeKey];
if (!$defined(signature)) {
throw "Unsupported attribute: " + attributeKey;
}
var firstLetter = signature[0].charAt(0);
return prefix + firstLetter.toUpperCase() + signature[0].substring(1);
},
/**
* All element properties can be setted using either a method invocation or attribute invocation.
* key: size, width, height, position, x, y, stroke, strokeWidth, strokeStyle, strokeColor, strokeOpacity,
* fill, fillColor, fillOpacity, coordSize, coordSizeWidth, coordSizeHeight, coordOrigin, coordOriginX, coordOrigiY
*/
setAttribute : function(key, value) {
var funcName = this._attributeNameToFuncName(key, 'set');
var signature = web2d.Element._propertyNameToSignature[key];
if (signature == null) {
throw "Could not find the signature for:" + key;
}
// Parse arguments ..
var argPositions = signature[1];
var args = [];
if (argPositions !== this._SIGNATURE_MULTIPLE_ARGUMENTS) {
args[argPositions] = value;
}
else if (typeof value == "array") {
args = value;
} else {
var strValue = String(value);
args = strValue.split(' ');
}
// Look up method ...
var setter = this[funcName];
if (setter == null) {
throw "Could not find the function name:" + funcName;
}
setter.apply(this, args);
},
getAttribute : function(key) {
var funcName = this._attributeNameToFuncName(key, 'get');
var signature = web2d.Element._propertyNameToSignature[key];
if (signature == null) {
throw "Could not find the signature for:" + key;
}
var getter = this[funcName];
if (getter == null) {
throw "Could not find the function name:" + funcName;
}
var getterResult = getter.apply(this, []);
var attibuteName = signature[2];
if (!$defined(attibuteName)) {
throw "Could not find attribute mapping for:" + key;
}
var result = getterResult[attibuteName];
if (!$defined(result)) {
throw "Could not find attribute with name:" + attibuteName;
}
return result;
},
/**
* Defines the element opacity.
* Parameters:
* opacity: A value between 0 and 1.
*/
setOpacity : function(opacity) {
this._peer.setStroke(null, null, null, opacity);
this._peer.setFill(null, opacity);
},
setVisibility : function(isVisible) {
this._peer.setVisibility(isVisible);
},
isVisible : function() {
return this._peer.isVisible();
},
/**
* Move the element to the front
*/
moveToFront : function() {
this._peer.moveToFront();
},
/**
* Move the element to the back
*/
moveToBack : function() {
this._peer.moveToBack();
},
getStroke : function() {
return this._peer.getStroke();
},
setCursor : function(type) {
this._peer.setCursor(type);
},
getParent : function() {
return this._peer.getParent();
}
});
web2d.Element._SIGNATURE_MULTIPLE_ARGUMENTS = -1;
web2d.Element._supportedEvents = ["click","dblclick","mousemove","mouseout","mouseover","mousedown","mouseup"];
web2d.Element._propertyNameToSignature =
{ {
// Format: [attribute name, argument position on setter, attribute name on getter] // Format: [attribute name, argument position on setter, attribute name on getter]
size: ['size',-1], size: ['size',-1],
@ -178,123 +300,3 @@ web2d.Element.prototype._propertyNameToSignature =
visibility:['visibility',0], visibility:['visibility',0],
opacity:['opacity',0] opacity:['opacity',0]
}; };
web2d.Element.prototype._attributeNameToFuncName = function(attributeKey, prefix) {
var signature = this._propertyNameToSignature[attributeKey];
if (!$defined(signature)) {
throw "Unsupported attribute: " + attributeKey;
}
var firstLetter = signature[0].charAt(0);
return prefix + firstLetter.toUpperCase() + signature[0].substring(1);
};
/**
* All element properties can be setted using either a method invocation or attribute invocation.
* key: size, width, height, position, x, y, stroke, strokeWidth, strokeStyle, strokeColor, strokeOpacity,
* fill, fillColor, fillOpacity, coordSize, coordSizeWidth, coordSizeHeight, coordOrigin, coordOriginX, coordOrigiY
*/
web2d.Element.prototype.setAttribute = function(key, value) {
var funcName = this._attributeNameToFuncName(key, 'set');
var signature = this._propertyNameToSignature[key];
if (signature == null) {
throw "Could not find the signature for:" + key;
}
// Parse arguments ..
var argPositions = signature[1];
var args = [];
if (argPositions !== this._SIGNATURE_MULTIPLE_ARGUMENTS) {
args[argPositions] = value;
}
else if (typeof value == "array") {
args = value;
} else {
var strValue = String(value);
args = strValue.split(' ');
}
// Look up method ...
var setter = this[funcName];
if (setter == null) {
throw "Could not find the function name:" + funcName;
}
setter.apply(this, args);
};
web2d.Element.prototype.getAttribute = function(key) {
var funcName = this._attributeNameToFuncName(key, 'get');
var signature = this._propertyNameToSignature[key];
if (signature == null) {
throw "Could not find the signature for:" + key;
}
var getter = this[funcName];
if (getter == null) {
throw "Could not find the function name:" + funcName;
}
var getterResult = getter.apply(this, []);
var attibuteName = signature[2];
if (!$defined(attibuteName)) {
throw "Could not find attribute mapping for:" + key;
}
var result = getterResult[attibuteName];
if (!$defined(result)) {
throw "Could not find attribute with name:" + attibuteName;
}
return result;
};
/**
* Defines the element opacity.
* Parameters:
* opacity: A value between 0 and 1.
*/
web2d.Element.prototype.setOpacity = function(opacity) {
this._peer.setStroke(null, null, null, opacity);
this._peer.setFill(null, opacity);
};
web2d.Element.prototype.setVisibility = function(isVisible) {
this._peer.setVisibility(isVisible);
};
web2d.Element.prototype.isVisible = function() {
return this._peer.isVisible();
};
/**
* Move the element to the front
*/
web2d.Element.prototype.moveToFront = function() {
this._peer.moveToFront();
};
/**
* Move the element to the back
*/
web2d.Element.prototype.moveToBack = function() {
this._peer.moveToBack();
};
web2d.Element.prototype.getStroke = function() {
return this._peer.getStroke();
};
web2d.Element.prototype.setCursor = function(type) {
this._peer.setCursor(type);
};
web2d.Element.prototype.getParent = function() {
return this._peer.getParent();
}

View File

@ -16,27 +16,22 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.Elipse = function(attributes) web2d.Elipse = new Class({
{ Extends: web2d.Element,
initialize: function(attributes) {
var peer = web2d.peer.Toolkit.createElipse(); var peer = web2d.peer.Toolkit.createElipse();
var defaultAttributes = {width:40, height:40, x:5, y:5,stroke:'1 solid black',fillColor:'blue'}; var defaultAttributes = {width:40, height:40, x:5, y:5,stroke:'1 solid black',fillColor:'blue'};
for (var key in attributes) for (var key in attributes) {
{
defaultAttributes[key] = attributes[key]; defaultAttributes[key] = attributes[key];
} }
web2d.Element.call(this, peer, defaultAttributes); this.parent(peer, defaultAttributes);
}; },
objects.extend(web2d.Elipse, web2d.Element);
web2d.Elipse.prototype.getType = function() getType : function() {
{
return "Elipse"; return "Elipse";
}; },
/** getSize : function() {
* @Todo: Complete Doc
*/
web2d.Elipse.prototype.getSize = function()
{
return this._peer.getSize(); return this._peer.getSize();
}; }
});

View File

@ -16,74 +16,63 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.Font = function(fontFamily, textPeer) web2d.Font = new Class({
{ initialize :function(fontFamily, textPeer) {
var font = "web2d.peer.Toolkit.create" + fontFamily + "Font();"; var font = "web2d.peer.Toolkit.create" + fontFamily + "Font();";
this._peer = eval(font); this._peer = eval(font);
this._textPeer = textPeer; this._textPeer = textPeer;
}; },
web2d.Font.prototype.getHtmlSize = function () getHtmlSize : function() {
{
var scale = web2d.peer.utils.TransformUtil.workoutScale(this._textPeer); var scale = web2d.peer.utils.TransformUtil.workoutScale(this._textPeer);
return this._peer.getHtmlSize(scale); return this._peer.getHtmlSize(scale);
}; },
web2d.Font.prototype.getGraphSize = function () getGraphSize : function() {
{
var scale = web2d.peer.utils.TransformUtil.workoutScale(this._textPeer); var scale = web2d.peer.utils.TransformUtil.workoutScale(this._textPeer);
return this._peer.getGraphSize(scale); return this._peer.getGraphSize(scale);
}; },
web2d.Font.prototype.getFontScale = function () getFontScale : function() {
{
return web2d.peer.utils.TransformUtil.workoutScale(this._textPeer).height; return web2d.peer.utils.TransformUtil.workoutScale(this._textPeer).height;
}; },
web2d.Font.prototype.getSize = function () getSize : function() {
{
return this._peer.getSize(); return this._peer.getSize();
}; },
web2d.Font.prototype.getStyle = function () getStyle : function() {
{
return this._peer.getStyle(); return this._peer.getStyle();
}; },
web2d.Font.prototype.getWeight = function () getWeight : function() {
{
return this._peer.getWeight(); return this._peer.getWeight();
}; },
web2d.Font.prototype.getFontFamily = function () getFontFamily : function() {
{
return this._peer.getFontFamily(); return this._peer.getFontFamily();
}; },
web2d.Font.prototype.setSize = function (size) setSize : function(size) {
{
return this._peer.setSize(size); return this._peer.setSize(size);
}; },
web2d.Font.prototype.setStyle = function (style) setStyle : function(style) {
{
return this._peer.setStyle(style); return this._peer.setStyle(style);
}; },
web2d.Font.prototype.setWeight = function (weight) setWeight : function(weight) {
{
return this._peer.setWeight(weight); return this._peer.setWeight(weight);
}; },
web2d.Font.prototype.getFont = function () getFont : function() {
{
return this._peer.getFont(); return this._peer.getFont();
}; },
web2d.Font.prototype.getWidthMargin = function () getWidthMargin : function() {
{
return this._peer.getWidthMargin(); return this._peer.getWidthMargin();
}; }
});
web2d.Font.ARIAL = "Arial"; web2d.Font.ARIAL = "Arial";

View File

@ -19,77 +19,65 @@
/** /**
* A group object can be used to collect shapes. * A group object can be used to collect shapes.
*/ */
web2d.Group = function(attributes) web2d.Group = new Class({
{ Extends: web2d.Element,
initialize : function(attributes) {
var peer = web2d.peer.Toolkit.createGroup(); var peer = web2d.peer.Toolkit.createGroup();
var defaultAttributes = {width:50, height:50, x:50, y:50,coordOrigin:'0 0',coordSize:'50 50'}; var defaultAttributes = {width:50, height:50, x:50, y:50,coordOrigin:'0 0',coordSize:'50 50'};
for (var key in attributes) for (var key in attributes) {
{
defaultAttributes[key] = attributes[key]; defaultAttributes[key] = attributes[key];
} }
web2d.Element.call(this, peer, defaultAttributes); this.parent(peer, defaultAttributes);
}; },
objects.extend(web2d.Group, web2d.Element);
/** /**
* Remove an element as a child to the object. * Remove an element as a child to the object.
*/ */
web2d.Group.prototype.removeChild = function(element) removeChild : function(element) {
{ if (!$defined(element)) {
if (!$defined(element))
{
throw "Child element can not be null"; throw "Child element can not be null";
} }
if (element == this) if (element == this) {
{
throw "It's not posible to add the group as a child of itself"; throw "It's not posible to add the group as a child of itself";
} }
var elementType = element.getType(); var elementType = element.getType();
if (elementType == null) if (elementType == null) {
{
throw "It seems not to be an element ->" + element; throw "It seems not to be an element ->" + element;
} }
this._peer.removeChild(element._peer); this._peer.removeChild(element._peer);
}; },
/** /**
* Appends an element as a child to the object. * Appends an element as a child to the object.
*/ */
web2d.Group.prototype.appendChild = function(element) appendChild : function(element) {
{ if (!$defined(element)) {
if (!$defined(element))
{
throw "Child element can not be null"; throw "Child element can not be null";
} }
if (element == this) if (element == this) {
{
throw "It's not posible to add the group as a child of itself"; throw "It's not posible to add the group as a child of itself";
} }
var elementType = element.getType(); var elementType = element.getType();
if (elementType == null) if (elementType == null) {
{
throw "It seems not to be an element ->" + element; throw "It seems not to be an element ->" + element;
} }
if (elementType == "Workspace") if (elementType == "Workspace") {
{
throw "A group can not have a workspace as a child"; throw "A group can not have a workspace as a child";
} }
this._peer.appendChild(element._peer); this._peer.appendChild(element._peer);
}; },
web2d.Group.prototype.getType = function() getType : function() {
{
return "Group"; return "Group";
}; },
/** /**
* The group element is a containing blocks for this content - they define a CSS2 "block level box". * The group element is a containing blocks for this content - they define a CSS2 "block level box".
@ -98,61 +86,42 @@ web2d.Group.prototype.getType = function()
* Consequently CSS2 position attributes (left, top, width, height and so on) have no unit specifier - * Consequently CSS2 position attributes (left, top, width, height and so on) have no unit specifier -
* they are simple numbers, not CSS length quantities. * they are simple numbers, not CSS length quantities.
*/ */
web2d.Group.prototype.setCoordSize = function(width, height) setCoordSize : function(width, height) {
{
this._peer.setCoordSize(width, height); this._peer.setCoordSize(width, height);
}; },
web2d.Group.prototype.getCoordSize = function(){ setCoordOrigin : function(x, y) {
return this.peer.getCoordSize();
};
/**
* @Todo: Complete Doc
*/
web2d.Group.prototype.setCoordOrigin = function(x, y)
{
this._peer.setCoordOrigin(x, y); this._peer.setCoordOrigin(x, y);
}; },
web2d.Group.prototype.getCoordOrigin = function(){ getCoordOrigin : function() {
return this._peer.getCoordOrigin(); return this._peer.getCoordOrigin();
}; },
getSize : function() {
/**
* @Todo: Complete Doc
*/
web2d.Group.prototype.getSize = function()
{
return this._peer.getSize(); return this._peer.getSize();
}; },
web2d.Group.prototype.setFill = function(color, opacity) setFill : function(color, opacity) {
{
throw "Unsupported operation. Fill can not be set to a group"; throw "Unsupported operation. Fill can not be set to a group";
}; },
web2d.Group.prototype.setStroke = function(width, style, color, opacity) setStroke : function(width, style, color, opacity) {
{
throw "Unsupported operation. Stroke can not be set to a group"; throw "Unsupported operation. Stroke can not be set to a group";
}; },
web2d.Group.prototype.getCoordSize = function() getCoordSize : function() {
{
return this._peer.getCoordSize(); return this._peer.getCoordSize();
}; },
web2d.Group.prototype.appendDomChild = function(DomElement) appendDomChild : function(DomElement) {
{ if (!$defined(DomElement)) {
if (!$defined(DomElement))
{
throw "Child element can not be null"; throw "Child element can not be null";
} }
if (DomElement == this) if (DomElement == this) {
{ throw "It's not possible to add the group as a child of itself";
throw "It's not posible to add the group as a child of itself";
} }
this._peer._native.appendChild(DomElement); this._peer._native.appendChild(DomElement);
}; }
});

View File

@ -16,23 +16,26 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.Image = function(attributes) { web2d.Image = new Class({
Extends: web2d.Element,
initialize : function(attributes) {
var peer = web2d.peer.Toolkit.createImage(); var peer = web2d.peer.Toolkit.createImage();
web2d.Element.call(this, peer, attributes); this.parent(peer, attributes);
}; },
objects.extend(web2d.Image, web2d.Element);
web2d.Image.prototype.getType = function() { getType : function() {
return "Image"; return "Image";
}; },
web2d.Image.prototype.setHref = function(href) { setHref : function(href) {
this._peer.setHref(href); this._peer.setHref(href);
}; },
web2d.Image.prototype.getHref = function() { getHref : function() {
return this._peer.getHref(); return this._peer.getHref();
}; },
web2d.Image.prototype.getSize = function() {
getSize : function() {
return this._peer.getSize(); return this._peer.getSize();
}; }
});

View File

@ -16,63 +16,54 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.Line = function(attributes) web2d.Line = new Class({
{ Extends: web2d.Element,
initialize: function(attributes) {
var peer = web2d.peer.Toolkit.createLine(); var peer = web2d.peer.Toolkit.createLine();
var defaultAttributes = {strokeColor:'#495879',strokeWidth:1, strokeOpacity:1}; var defaultAttributes = {strokeColor:'#495879',strokeWidth:1, strokeOpacity:1};
for (var key in attributes) for (var key in attributes) {
{
defaultAttributes[key] = attributes[key]; defaultAttributes[key] = attributes[key];
} }
web2d.Element.call(this, peer, defaultAttributes); this.parent(peer, defaultAttributes);
}; },
objects.extend(web2d.Line, web2d.Element);
web2d.Line.prototype.getType = function() getType : function() {
{
return "Line"; return "Line";
}; },
web2d.Line.prototype.setFrom = function(x, y) setFrom : function(x, y) {
{
this._peer.setFrom(x, y); this._peer.setFrom(x, y);
}; },
web2d.Line.prototype.setTo = function(x, y) setTo : function(x, y) {
{
this._peer.setTo(x, y); this._peer.setTo(x, y);
}; },
web2d.Line.prototype.getFrom = function() getFrom : function() {
{
return this._peer.getFrom(); return this._peer.getFrom();
}; },
web2d.Line.prototype.getTo = function() getTo : function() {
{
return this._peer.getTo(); return this._peer.getTo();
}; },
/** /**
* Defines the start and the end line arrow style. * Defines the start and the end line arrow style.
* Can have values "none | block | classic | diamond | oval | open | chevron | doublechevron" * Can have values "none | block | classic | diamond | oval | open | chevron | doublechevron"
**/ **/
web2d.Line.prototype.setArrowStyle = function(startStyle, endStyle) setArrowStyle : function(startStyle, endStyle) {
{
this._peer.setArrowStyle(startStyle, endStyle); this._peer.setArrowStyle(startStyle, endStyle);
}; },
web2d.Line.prototype.setPosition = function(cx, cy) setPosition : function(cx, cy) {
{
throw "Unsupported operation"; throw "Unsupported operation";
}; },
web2d.Line.prototype.setSize = function(width, height) setSize : function(width, height) {
{
throw "Unsupported operation"; throw "Unsupported operation";
}; },
web2d.Line.prototype.setFill = function(color, opacity) setFill : function(color, opacity) {
{
throw "Unsupported operation"; throw "Unsupported operation";
}; }
});

View File

@ -16,73 +16,62 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.PolyLine = function(attributes) web2d.PolyLine = new Class({
{ Extends: web2d.Element,
initialize:function(attributes) {
var peer = web2d.peer.Toolkit.createPolyLine(); var peer = web2d.peer.Toolkit.createPolyLine();
var defaultAttributes = {strokeColor:'blue',strokeWidth:1,strokeStyle:'solid',strokeOpacity:1}; var defaultAttributes = {strokeColor:'blue',strokeWidth:1,strokeStyle:'solid',strokeOpacity:1};
for (var key in attributes) for (var key in attributes) {
{
defaultAttributes[key] = attributes[key]; defaultAttributes[key] = attributes[key];
} }
web2d.Element.call(this, peer, defaultAttributes); this.parent(peer, defaultAttributes);
}; },
objects.extend(web2d.PolyLine, web2d.Element);
web2d.PolyLine.prototype.getType = function() getType : function() {
{
return "PolyLine"; return "PolyLine";
}; },
web2d.PolyLine.prototype.setFrom = function(x, y) setFrom : function(x, y) {
{
this._peer.setFrom(x, y); this._peer.setFrom(x, y);
}; },
web2d.PolyLine.prototype.setTo = function(x, y) setTo : function(x, y) {
{
this._peer.setTo(x, y); this._peer.setTo(x, y);
}; },
web2d.PolyLine.prototype.setStyle = function(style) setStyle : function(style) {
{
this._peer.setStyle(style); this._peer.setStyle(style);
}; },
web2d.PolyLine.prototype.getStyle = function() getStyle : function() {
{
return this._peer.getStyle(); return this._peer.getStyle();
}; },
web2d.PolyLine.buildCurvedPath = function(dist, x1, y1, x2, y2) buildCurvedPath : function(dist, x1, y1, x2, y2) {
{
var signx = 1; var signx = 1;
var signy = 1; var signy = 1;
if (x2 < x1) if (x2 < x1) {
{
signx = -1; signx = -1;
} }
if (y2 < y1) if (y2 < y1) {
{
signy = -1; signy = -1;
} }
var path; var path;
if (Math.abs(y1 - y2) > 2) if (Math.abs(y1 - y2) > 2) {
{
var middlex = x1 + ((x2 - x1 > 0) ? dist : -dist); var middlex = x1 + ((x2 - x1 > 0) ? dist : -dist);
path = x1.toFixed(1) + ", " + y1.toFixed(1) + " " + middlex.toFixed(1) + ", " + y1.toFixed(1) + " " + middlex.toFixed(1) + ", " + (y2 - 5 * signy).toFixed(1) + " " + (middlex + 5 * signx).toFixed(1) + ", " + y2.toFixed(1) + " " + x2.toFixed(1) + ", " + y2.toFixed(1); path = x1.toFixed(1) + ", " + y1.toFixed(1) + " " + middlex.toFixed(1) + ", " + y1.toFixed(1) + " " + middlex.toFixed(1) + ", " + (y2 - 5 * signy).toFixed(1) + " " + (middlex + 5 * signx).toFixed(1) + ", " + y2.toFixed(1) + " " + x2.toFixed(1) + ", " + y2.toFixed(1);
} else } else {
{
path = x1.toFixed(1) + ", " + y1.toFixed(1) + " " + x2.toFixed(1) + ", " + y2.toFixed(1); path = x1.toFixed(1) + ", " + y1.toFixed(1) + " " + x2.toFixed(1) + ", " + y2.toFixed(1);
} }
return path; return path;
}; },
web2d.PolyLine.buildStraightPath = function(dist, x1, y1, x2, y2) buildStraightPath : function(dist, x1, y1, x2, y2) {
{
var middlex = x1 + ((x2 - x1 > 0) ? dist : -dist); var middlex = x1 + ((x2 - x1 > 0) ? dist : -dist);
return x1 + ", " + y1 + " " + middlex + ", " + y1 + " " + middlex + ", " + y2 + " " + x2 + ", " + y2; return x1 + ", " + y1 + " " + middlex + ", " + y1 + " " + middlex + ", " + y2 + " " + x2 + ", " + y2;
}; }
});

View File

@ -22,37 +22,30 @@
* arc = "<length>" * arc = "<length>"
* For rounded rectangles, radius of the ellipse used to round off the corners of the rectangle. * For rounded rectangles, radius of the ellipse used to round off the corners of the rectangle.
*/ */
web2d.Rect = function(arc, attributes) web2d.Rect = new Class({
{ Extends: web2d.Element,
if (arc && arc > 1) initialize : function(arc, attributes) {
{ if (arc && arc > 1) {
throw "Arc must be 0<=arc<=1"; throw "Arc must be 0<=arc<=1";
} }
if (arguments.length <= 0) if (arguments.length <= 0) {
{
var rx = 0; var rx = 0;
var ry = 0; var ry = 0;
} }
var peer = web2d.peer.Toolkit.createRect(arc); var peer = web2d.peer.Toolkit.createRect(arc);
var defaultAttributes = {width:40, height:40, x:5, y:5,stroke:'1 solid black',fillColor:'green'}; var defaultAttributes = {width:40, height:40, x:5, y:5,stroke:'1 solid black',fillColor:'green'};
for (var key in attributes) for (var key in attributes) {
{
defaultAttributes[key] = attributes[key]; defaultAttributes[key] = attributes[key];
} }
web2d.Element.call(this, peer, defaultAttributes); this.parent(peer, defaultAttributes);
}; },
objects.extend(web2d.Rect, web2d.Element);
web2d.Rect.prototype.getType = function() getType : function() {
{
return "Rect"; return "Rect";
}; },
/** getSize : function() {
* @Todo: Complete Doc
*/
web2d.Rect.prototype.getSize = function()
{
return this._peer.getSize(); return this._peer.getSize();
}; }
});

View File

@ -16,84 +16,70 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.Text = function(attributes) web2d.Text = new Class({
{ Extends:web2d.Element,
initialize:function(attributes) {
var peer = web2d.peer.Toolkit.createText(); var peer = web2d.peer.Toolkit.createText();
web2d.Element.call(this, peer, attributes); this.parent(peer, attributes);
}; },
objects.extend(web2d.Text, web2d.Element);
web2d.Text.prototype.getType = function() getType : function() {
{
return "Text"; return "Text";
}; },
web2d.Text.prototype.setText = function(text) setText : function(text) {
{
this._peer.setText(text); this._peer.setText(text);
}; },
web2d.Text.prototype.setTextSize = function(width, height) setTextSize : function(width, height) {
{
this._peer.setContentSize(width, height); this._peer.setContentSize(width, height);
}; },
web2d.Text.prototype.getText = function() getText : function() {
{
return this._peer.getText(); return this._peer.getText();
}; },
web2d.Text.prototype.setFont = function(font, size, style, weight) setFont : function(font, size, style, weight) {
{
this._peer.setFont(font, size, style, weight); this._peer.setFont(font, size, style, weight);
}; },
web2d.Text.prototype.setColor = function(color) setColor : function(color) {
{
this._peer.setColor(color); this._peer.setColor(color);
}; },
web2d.Text.prototype.getColor = function() getColor : function() {
{
return this._peer.getColor(); return this._peer.getColor();
}; },
web2d.Text.prototype.setStyle = function(style) setStyle : function(style) {
{
this._peer.setStyle(style); this._peer.setStyle(style);
}; },
web2d.Text.prototype.setWeight = function(weight) setWeight : function(weight) {
{
this._peer.setWeight(weight); this._peer.setWeight(weight);
}; },
web2d.Text.prototype.setFontFamily = function(family) setFontFamily : function(family) {
{
this._peer.setFontFamily(family); this._peer.setFontFamily(family);
}; },
web2d.Text.prototype.getFont = function() getFont : function() {
{
return this._peer.getFont(); return this._peer.getFont();
}; },
web2d.Text.prototype.setSize = function(size) setSize : function(size) {
{
this._peer.setSize(size); this._peer.setSize(size);
}; },
web2d.Text.prototype.getHtmlFontSize = function() getHtmlFontSize : function() {
{
return this._peer.getHtmlFontSize(); return this._peer.getHtmlFontSize();
}; },
web2d.Text.prototype.getWidth = function() getWidth : function() {
{
return this._peer.getWidth(); return this._peer.getWidth();
}; },
web2d.Text.prototype.getHeight = function() getHeight : function() {
{
return parseInt(this._peer.getHeight()); return parseInt(this._peer.getHeight());
}; }
});

View File

@ -16,68 +16,54 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.Workspace = function(attributes) web2d.Workspace = new Class({
{ Extends:web2d.Element,
initialize:function(attributes) {
this._htmlContainer = this._createDivContainer(); this._htmlContainer = this._createDivContainer();
var peer = web2d.peer.Toolkit.createWorkspace(this._htmlContainer); var peer = web2d.peer.Toolkit.createWorkspace(this._htmlContainer);
var defaultAttributes = {width:'200px',height:'200px',stroke:'1px solid #edf1be', var defaultAttributes = {width:'200px',height:'200px',stroke:'1px solid #edf1be',
fillColor:"white",coordOrigin:'0 0',coordSize:'200 200' }; fillColor:"white",coordOrigin:'0 0',coordSize:'200 200' };
for (var key in attributes) for (var key in attributes) {
{
defaultAttributes[key] = attributes[key]; defaultAttributes[key] = attributes[key];
} }
web2d.Element.call(this, peer, defaultAttributes); this.parent(peer, defaultAttributes);
this._htmlContainer.appendChild(this._peer._native); this._htmlContainer.appendChild(this._peer._native);
}; },
objects.extend(web2d.Workspace, web2d.Element); getType : function() {
web2d.Workspace.prototype.getType = function()
{
return "Workspace"; return "Workspace";
}; },
/** /**
* Appends an element as a child to the object. * Appends an element as a child to the object.
*/ */
web2d.Workspace.prototype.appendChild = function(element) appendChild : function(element) {
{ if (!$defined(element)) {
if (!$defined(element))
{
throw "Child element can not be null"; throw "Child element can not be null";
} }
var elementType = element.getType(); var elementType = element.getType();
if (elementType == null) if (elementType == null) {
{
throw "It seems not to be an element ->" + element; throw "It seems not to be an element ->" + element;
} }
if (elementType == "Workspace") if (elementType == "Workspace") {
{
throw "A workspace can not have a workspace as a child"; throw "A workspace can not have a workspace as a child";
} }
this._peer.appendChild(element._peer); this._peer.appendChild(element._peer);
}; },
/** addItAsChildTo : function(element) {
* @todo: Write doc. if (!$defined(element)) {
*/
web2d.Workspace.prototype.addItAsChildTo = function(element)
{
if (!$defined(element))
{
throw "Workspace div container can not be null"; throw "Workspace div container can not be null";
} }
element.appendChild(this._htmlContainer); element.appendChild(this._htmlContainer);
}; },
/** /**
* Create a new div element that will be responsible for containing the workspace elements. * Create a new div element that will be responsible for containing the workspace elements.
*/ */
web2d.Workspace.prototype._createDivContainer = function(domElement) _createDivContainer : function(domElement) {
{
var container = window.document.createElement("div"); var container = window.document.createElement("div");
container.id = "workspaceContainer"; container.id = "workspaceContainer";
container.style.overflow = "hidden"; container.style.overflow = "hidden";
@ -88,7 +74,7 @@ web2d.Workspace.prototype._createDivContainer = function(domElement)
container.style.border = '1px solid red'; container.style.border = '1px solid red';
return container; return container;
}; },
/** /**
* Set the workspace area size. It can be defined using different units: * Set the workspace area size. It can be defined using different units:
@ -98,21 +84,18 @@ web2d.Workspace.prototype._createDivContainer = function(domElement)
* pt (points; 1pt=1/72in) * pt (points; 1pt=1/72in)
* pc (picas; 1pc=12pt) * pc (picas; 1pc=12pt)
*/ */
web2d.Workspace.prototype.setSize = function(width, height) setSize : function(width, height) {
{
// HTML container must have the size of the group element. // HTML container must have the size of the group element.
if ($defined(width)) if ($defined(width)) {
{
this._htmlContainer.style.width = width; this._htmlContainer.style.width = width;
} }
if ($defined(height)) if ($defined(height)) {
{
this._htmlContainer.style.height = height; this._htmlContainer.style.height = height;
} }
this._peer.setSize(width, height); this._peer.setSize(width, height);
}; },
/** /**
* The workspace element is a containing blocks for this content - they define a CSS2 "block level box". * The workspace element is a containing blocks for this content - they define a CSS2 "block level box".
@ -121,109 +104,90 @@ web2d.Workspace.prototype.setSize = function(width, height)
* Consequently CSS2 position attributes (left, top, width, height and so on) have no unit specifier - * Consequently CSS2 position attributes (left, top, width, height and so on) have no unit specifier -
* they are simple numbers, not CSS length quantities. * they are simple numbers, not CSS length quantities.
*/ */
web2d.Workspace.prototype.setCoordSize = function(width, height) setCoordSize : function(width, height) {
{
this._peer.setCoordSize(width, height); this._peer.setCoordSize(width, height);
}; },
/** /**
* @Todo: Complete Doc * @Todo: Complete Doc
*/ */
web2d.Workspace.prototype.setCoordOrigin = function(x, y) setCoordOrigin : function(x, y) {
{
this._peer.setCoordOrigin(x, y); this._peer.setCoordOrigin(x, y);
}; },
/** /**
* @Todo: Complete Doc * @Todo: Complete Doc
*/ */
web2d.Workspace.prototype.getCoordOrigin = function() getCoordOrigin : function() {
{
return this._peer.getCoordOrigin(); return this._peer.getCoordOrigin();
}; },
// Private method declaration area // Private method declaration area
/** /**
* All the SVG elements will be children of this HTML element. * All the SVG elements will be children of this HTML element.
*/ */
web2d.Workspace.prototype._getHtmlContainer = function() _getHtmlContainer : function() {
{
return this._htmlContainer; return this._htmlContainer;
}; },
web2d.Workspace.prototype.setFill = function(color, opacity) setFill : function(color, opacity) {
{
this._htmlContainer.style.backgroundColor = color; this._htmlContainer.style.backgroundColor = color;
if (opacity || opacity === 0) if (opacity || opacity === 0) {
{
throw "Unsupported operation. Opacity not supported."; throw "Unsupported operation. Opacity not supported.";
} }
}; },
web2d.Workspace.prototype.getFill = function() getFill : function() {
{
var color = this._htmlContainer.style.backgroundColor; var color = this._htmlContainer.style.backgroundColor;
return {color:color}; return {color:color};
}; },
/**
* @Todo: Complete Doc getSize : function() {
*/
web2d.Workspace.prototype.getSize = function()
{
var width = this._htmlContainer.style.width; var width = this._htmlContainer.style.width;
var height = this._htmlContainer.style.height; var height = this._htmlContainer.style.height;
return {width:width,height:height}; return {width:width,height:height};
}; },
web2d.Workspace.prototype.setStroke = function(width, style, color, opacity) setStroke : function(width, style, color, opacity) {
{ if (style != 'solid') {
if (style != 'solid')
{
throw 'Not supported style stroke style:' + style; throw 'Not supported style stroke style:' + style;
} }
this._htmlContainer.style.border = width + ' ' + style + ' ' + color; this._htmlContainer.style.border = width + ' ' + style + ' ' + color;
if (opacity || opacity === 0) if (opacity || opacity === 0) {
{
throw "Unsupported operation. Opacity not supported."; throw "Unsupported operation. Opacity not supported.";
} }
}; },
web2d.Workspace.prototype.getCoordSize = function() getCoordSize : function() {
{
return this._peer.getCoordSize(); return this._peer.getCoordSize();
}; },
/** /**
* Remove an element as a child to the object. * Remove an element as a child to the object.
*/ */
web2d.Workspace.prototype.removeChild = function(element) removeChild : function(element) {
{ if (!$defined(element)) {
if (!$defined(element))
{
throw "Child element can not be null"; throw "Child element can not be null";
} }
if (element == this) if (element == this) {
{
throw "It's not posible to add the group as a child of itself"; throw "It's not posible to add the group as a child of itself";
} }
var elementType = element.getType(); var elementType = element.getType();
if (elementType == null) if (elementType == null) {
{
throw "It seems not to be an element ->" + element; throw "It seems not to be an element ->" + element;
} }
this._peer.removeChild(element._peer); this._peer.removeChild(element._peer);
}; },
dumpNativeChart : function() {
web2d.Workspace.prototype.dumpNativeChart = function()
{
var elem = this._htmlContainer var elem = this._htmlContainer
return elem.innerHTML; return elem.innerHTML;
}; }
});

View File

@ -16,20 +16,18 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.ArialFont = function() web2d.peer.svg.ArialFont = new Class({
{ Extends: web2d.peer.svg.Font,
web2d.peer.svg.Font.call(this); initialize :function() {
this.parent();
this._fontFamily = "Arial"; this._fontFamily = "Arial";
}; },
objects.extend(web2d.peer.svg.ArialFont, web2d.peer.svg.Font); getFontFamily : function () {
web2d.peer.svg.ArialFont.prototype.getFontFamily=function ()
{
return this._fontFamily; return this._fontFamily;
}; },
web2d.peer.svg.ArialFont.prototype.getFont=function () getFont : function () {
{
return web2d.Font.ARIAL; return web2d.Font.ARIAL;
}; }
});

View File

@ -16,59 +16,52 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.ArrowPeer = function() web2d.peer.svg.ArrowPeer = new Class({
{ Extends: web2d.peer.svg.ElementPeer,
initialize : function() {
var svgElement = window.document.createElementNS(this.svgNamespace, 'path'); var svgElement = window.document.createElementNS(this.svgNamespace, 'path');
web2d.peer.svg.ElementPeer.call(this, svgElement); this.parent(svgElement);
this._style = {}; this._style = {};
this._controlPoint = new core.Point(); this._controlPoint = new core.Point();
this._fromPoint = new core.Point(); this._fromPoint = new core.Point();
}; },
objects.extend(web2d.peer.svg.ArrowPeer, web2d.peer.svg.ElementPeer); setFrom : function(x, y) {
web2d.peer.svg.ArrowPeer.prototype.setFrom = function(x,y)
{
this._fromPoint.x = x; this._fromPoint.x = x;
this._fromPoint.y = y; this._fromPoint.y = y;
this._redraw(); this._redraw();
}; },
web2d.peer.svg.ArrowPeer.prototype.setControlPoint = function (point) setControlPoint : function (point) {
{
this._controlPoint = point; this._controlPoint = point;
this._redraw(); this._redraw();
}; },
web2d.peer.svg.ArrowPeer.prototype.setStrokeColor = function (color) setStrokeColor : function (color) {
{
this.setStroke(null, null, color, null); this.setStroke(null, null, color, null);
}; },
web2d.peer.svg.ArrowPeer.prototype.setStrokeWidth = function(width) setStrokeWidth : function(width) {
{
this.setStroke(width); this.setStroke(width);
}; },
web2d.peer.svg.ArrowPeer.prototype.setDashed = function(isDashed, length, spacing){ setDashed : function(isDashed, length, spacing) {
if ($defined(isDashed) && isDashed && $defined(length) && $defined(spacing)) { if ($defined(isDashed) && isDashed && $defined(length) && $defined(spacing)) {
this._native.setAttribute("stroke-dasharray", length + "," + spacing); this._native.setAttribute("stroke-dasharray", length + "," + spacing);
} else { } else {
this._native.setAttribute("stroke-dasharray", ""); this._native.setAttribute("stroke-dasharray", "");
} }
}; },
web2d.peer.svg.ArrowPeer.prototype._updateStyle = function() _updateStyle : function() {
{
var style = ""; var style = "";
for (var key in this._style) { for (var key in this._style) {
style += key + ":" + this._style[key] + " "; style += key + ":" + this._style[key] + " ";
} }
this._native.setAttribute("style", style); this._native.setAttribute("style", style);
}; },
web2d.peer.svg.ArrowPeer.prototype._redraw = function() _redraw : function() {
{
var x,y, xp, yp; var x,y, xp, yp;
if (this._controlPoint.y == 0) if (this._controlPoint.y == 0)
this._controlPoint.y = 1; this._controlPoint.y = 1;
@ -95,5 +88,6 @@ web2d.peer.svg.ArrowPeer.prototype._redraw = function()
+ "L" + (xp + this._fromPoint.x) + "," + (yp + this._fromPoint.y) + "L" + (xp + this._fromPoint.x) + "," + (yp + this._fromPoint.y)
; ;
this._native.setAttribute("d", path); this._native.setAttribute("d", path);
}; }
});

View File

@ -16,10 +16,11 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.CurvedLinePeer = function() web2d.peer.svg.CurvedLinePeer = new Class({
{ Extends: web2d.peer.svg.ElementPeer,
initialize :function() {
var svgElement = window.document.createElementNS(this.svgNamespace, 'path'); var svgElement = window.document.createElementNS(this.svgNamespace, 'path');
web2d.peer.svg.ElementPeer.call(this, svgElement); this.parent(svgElement);
this._style = {fill:'#495879'}; this._style = {fill:'#495879'};
this._updateStyle(); this._updateStyle();
this._customControlPoint_1 = false; this._customControlPoint_1 = false;
@ -27,11 +28,10 @@ web2d.peer.svg.CurvedLinePeer = function()
this._control1 = new core.Point(); this._control1 = new core.Point();
this._control2 = new core.Point(); this._control2 = new core.Point();
this._lineStyle = true; this._lineStyle = true;
}; },
objects.extend(web2d.peer.svg.CurvedLinePeer, web2d.peer.svg.ElementPeer);
web2d.peer.svg.CurvedLinePeer.prototype.setSrcControlPoint = function(control){ setSrcControlPoint : function(control) {
this._customControlPoint_1 = true; this._customControlPoint_1 = true;
var change = this._control1.x != control.x || this._control1.y != control.y; var change = this._control1.x != control.x || this._control1.y != control.y;
if ($defined(control.x)) { if ($defined(control.x)) {
@ -41,9 +41,9 @@ web2d.peer.svg.CurvedLinePeer.prototype.setSrcControlPoint = function(control){
} }
if (change) if (change)
this._updatePath(); this._updatePath();
}; },
web2d.peer.svg.CurvedLinePeer.prototype.setDestControlPoint = function(control){ setDestControlPoint : function(control) {
this._customControlPoint_2 = true; this._customControlPoint_2 = true;
var change = this._control2.x != control.x || this._control2.y != control.y; var change = this._control2.x != control.x || this._control2.y != control.y;
if ($defined(control.x)) { if ($defined(control.x)) {
@ -53,76 +53,69 @@ web2d.peer.svg.CurvedLinePeer.prototype.setDestControlPoint = function(control){
} }
if (change) if (change)
this._updatePath(); this._updatePath();
}; },
web2d.peer.svg.CurvedLinePeer.prototype.isSrcControlPointCustom = function() { isSrcControlPointCustom : function() {
return this._customControlPoint_1; return this._customControlPoint_1;
}; },
web2d.peer.svg.CurvedLinePeer.prototype.isDestControlPointCustom = function() { isDestControlPointCustom : function() {
return this._customControlPoint_2; return this._customControlPoint_2;
}; },
web2d.peer.svg.CurvedLinePeer.prototype.setIsSrcControlPointCustom = function(isCustom) { setIsSrcControlPointCustom : function(isCustom) {
this._customControlPoint_1 = isCustom; this._customControlPoint_1 = isCustom;
}; },
web2d.peer.svg.CurvedLinePeer.prototype.setIsDestControlPointCustom = function(isCustom) { setIsDestControlPointCustom : function(isCustom) {
this._customControlPoint_2 = isCustom; this._customControlPoint_2 = isCustom;
}; },
getControlPoints : function() {
web2d.peer.svg.CurvedLinePeer.prototype.getControlPoints = function(){
return [this._control1, this._control2]; return [this._control1, this._control2];
}; },
web2d.peer.svg.CurvedLinePeer.prototype.setFrom = function(x1, y1) setFrom : function(x1, y1) {
{
var change = this._x1 != parseInt(x1) || this._y1 != parseInt(y1); var change = this._x1 != parseInt(x1) || this._y1 != parseInt(y1);
this._x1 = parseInt(x1); this._x1 = parseInt(x1);
this._y1 = parseInt(y1); this._y1 = parseInt(y1);
if (change) if (change)
this._updatePath(); this._updatePath();
}; },
web2d.peer.svg.CurvedLinePeer.prototype.setTo = function(x2, y2) setTo : function(x2, y2) {
{
var change = this._x2 != parseInt(x2) || this._y2 != parseInt(y2); var change = this._x2 != parseInt(x2) || this._y2 != parseInt(y2);
this._x2 = parseInt(x2); this._x2 = parseInt(x2);
this._y2 = parseInt(y2); this._y2 = parseInt(y2);
if (change) if (change)
this._updatePath(); this._updatePath();
}; },
web2d.peer.svg.CurvedLinePeer.prototype.getFrom = function() getFrom : function() {
{
return new core.Point(this._x1, this._y1); return new core.Point(this._x1, this._y1);
}; },
web2d.peer.svg.CurvedLinePeer.prototype.getTo = function() getTo : function() {
{
return new core.Point(this._x2, this._y2); return new core.Point(this._x2, this._y2);
}; },
web2d.peer.svg.CurvedLinePeer.prototype.setStrokeWidth = function(width) setStrokeWidth : function(width) {
{
this._style['stroke-width'] = width; this._style['stroke-width'] = width;
this._updateStyle(); this._updateStyle();
}; },
web2d.peer.svg.CurvedLinePeer.prototype.setColor = function(color) setColor : function(color) {
{
this._style['stroke'] = color; this._style['stroke'] = color;
this._style['fill'] = color; this._style['fill'] = color;
this._updateStyle(); this._updateStyle();
}; },
web2d.peer.svg.CurvedLinePeer.prototype.updateLine = function(avoidControlPointFix){ updateLine : function(avoidControlPointFix) {
this._updatePath(avoidControlPointFix); this._updatePath(avoidControlPointFix);
}; },
web2d.peer.svg.CurvedLinePeer.prototype.setLineStyle = function (style){ setLineStyle : function (style) {
this._lineStyle = style; this._lineStyle = style;
if (this._lineStyle) { if (this._lineStyle) {
this._style['fill'] = this._fill; this._style['fill'] = this._fill;
@ -132,36 +125,34 @@ web2d.peer.svg.CurvedLinePeer.prototype.setLineStyle = function (style){
} }
this._updateStyle(); this._updateStyle();
this.updateLine(); this.updateLine();
}; },
web2d.peer.svg.CurvedLinePeer.prototype.getLineStyle = function (){ getLineStyle : function () {
return this._lineStyle; return this._lineStyle;
}; },
web2d.peer.svg.CurvedLinePeer.prototype.setShowEndArrow = function(visible){ setShowEndArrow : function(visible) {
this._showEndArrow = visible; this._showEndArrow = visible;
this.updateLine(); this.updateLine();
}; },
web2d.peer.svg.CurvedLinePeer.prototype.isShowEndArrow = function(){ isShowEndArrow : function() {
return this._showEndArrow; return this._showEndArrow;
}; },
web2d.peer.svg.CurvedLinePeer.prototype.setShowStartArrow = function(visible){ setShowStartArrow : function(visible) {
this._showStartArrow = visible; this._showStartArrow = visible;
this.updateLine(); this.updateLine();
}; },
web2d.peer.svg.CurvedLinePeer.prototype.isShowStartArrow = function(){ isShowStartArrow : function() {
return this._showStartArrow; return this._showStartArrow;
}; },
web2d.peer.svg.CurvedLinePeer.prototype._updatePath = function(avoidControlPointFix) _updatePath : function(avoidControlPointFix) {
{ if ($defined(this._x1) && $defined(this._y1) && $defined(this._x2) && $defined(this._y2)) {
if($defined(this._x1) && $defined(this._y1) && $defined(this._x2) && $defined(this._y2))
{
this._calculateAutoControlPoints(avoidControlPointFix); this._calculateAutoControlPoints(avoidControlPointFix);
var path = "M" + this._x1 + "," + this._y1 var path = "M" + this._x1 + "," + this._y1
+ " C" + (this._control1.x + this._x1) + "," + (this._control1.y + this._y1) + " " + " C" + (this._control1.x + this._x1) + "," + (this._control1.y + this._y1) + " "
@ -175,18 +166,17 @@ web2d.peer.svg.CurvedLinePeer.prototype._updatePath = function(avoidControlPoint
); );
this._native.setAttribute("d", path); this._native.setAttribute("d", path);
} }
}; },
web2d.peer.svg.CurvedLinePeer.prototype._updateStyle = function() _updateStyle : function() {
{
var style = ""; var style = "";
for (var key in this._style) { for (var key in this._style) {
style += key + ":" + this._style[key] + " "; style += key + ":" + this._style[key] + " ";
} }
this._native.setAttribute("style", style); this._native.setAttribute("style", style);
}; },
web2d.peer.svg.CurvedLinePeer.prototype._calculateAutoControlPoints = function(avoidControlPointFix){ _calculateAutoControlPoints : function(avoidControlPointFix) {
//Both points available, calculate real points //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)); var defaultpoints = core.Utils.calculateDefaultControlPoints(new core.Point(this._x1, this._y1), new core.Point(this._x2, this._y2));
if (!this._customControlPoint_1 && !($defined(avoidControlPointFix) && avoidControlPointFix == 0)) { if (!this._customControlPoint_1 && !($defined(avoidControlPointFix) && avoidControlPointFix == 0)) {
@ -197,13 +187,14 @@ web2d.peer.svg.CurvedLinePeer.prototype._calculateAutoControlPoints = function(a
this._control2.x = defaultpoints[1].x; this._control2.x = defaultpoints[1].x;
this._control2.y = defaultpoints[1].y; this._control2.y = defaultpoints[1].y;
} }
}; },
web2d.peer.svg.CurvedLinePeer.prototype.setDashed = function(length,spacing){ setDashed : function(length, spacing) {
if ($defined(length) && $defined(spacing)) { if ($defined(length) && $defined(spacing)) {
this._native.setAttribute("stroke-dasharray", length + "," + spacing); this._native.setAttribute("stroke-dasharray", length + "," + spacing);
} else { } else {
this._native.setAttribute("stroke-dasharray", ""); this._native.setAttribute("stroke-dasharray", "");
} }
}; }
});

View File

@ -16,38 +16,36 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.ElementPeer = function(svgElement) { web2d.peer.svg.ElementPeer = new Class({
initialize :function(svgElement) {
this._native = svgElement; this._native = svgElement;
this._size = {width:1,height:1}; this._size = {width:1,height:1};
this._changeListeners = {}; this._changeListeners = {};
// http://support.adobe.com/devsup/devsup.nsf/docs/50493.htm // http://support.adobe.com/devsup/devsup.nsf/docs/50493.htm
}; },
web2d.peer.svg.ElementPeer.prototype.svgNamespace = 'http://www.w3.org/2000/svg'; setChildren : function(children) {
web2d.peer.svg.ElementPeer.prototype.linkNamespace = 'http://www.w3.org/1999/xlink';
web2d.peer.svg.ElementPeer.prototype.setChildren = function(children) {
this._children = children; this._children = children;
}; },
web2d.peer.svg.ElementPeer.prototype.getChildren = function() { getChildren : function() {
var result = this._children; var result = this._children;
if (!$defined(result)) { if (!$defined(result)) {
result = []; result = [];
this._children = result; this._children = result;
} }
return result; return result;
}; },
web2d.peer.svg.ElementPeer.prototype.getParent = function() { getParent : function() {
return this._parent; return this._parent;
}; },
web2d.peer.svg.ElementPeer.prototype.setParent = function(parent) { setParent : function(parent) {
this._parent = parent; this._parent = parent;
}; },
web2d.peer.svg.ElementPeer.prototype.appendChild = function(elementPeer) { appendChild : function(elementPeer) {
// Store parent and child relationship. // Store parent and child relationship.
elementPeer.setParent(this); elementPeer.setParent(this);
var children = this.getChildren(); var children = this.getChildren();
@ -58,10 +56,10 @@ web2d.peer.svg.ElementPeer.prototype.appendChild = function(elementPeer) {
// Broadcast events ... // Broadcast events ...
web2d.peer.utils.EventUtils.broadcastChangeEvent(this, "strokeStyle"); web2d.peer.utils.EventUtils.broadcastChangeEvent(this, "strokeStyle");
}; },
web2d.peer.svg.ElementPeer.prototype.removeChild = function(elementPeer) { removeChild : function(elementPeer) {
// Store parent and child relationship. // Store parent and child relationship.
elementPeer.setParent(null); elementPeer.setParent(null);
var children = this.getChildren(); var children = this.getChildren();
@ -77,23 +75,23 @@ web2d.peer.svg.ElementPeer.prototype.removeChild = function(elementPeer) {
} }
// Append element as a child. // Append element as a child.
this._native.removeChild(elementPeer._native); this._native.removeChild(elementPeer._native);
}; },
/** /**
* http://www.w3.org/TR/DOM-Level-3-Events/events.html * http://www.w3.org/TR/DOM-Level-3-Events/events.html
* http://developer.mozilla.org/en/docs/addEvent * http://developer.mozilla.org/en/docs/addEvent
*/ */
web2d.peer.svg.ElementPeer.prototype.addEvent = function(type, listener) { addEvent : function(type, listener) {
this._native.addEvent(type, listener); this._native.addEvent(type, listener);
}; },
web2d.peer.svg.ElementPeer.prototype.removeEvent = function(type, listener) { removeEvent : function(type, listener) {
this._native.removeEvent(type, listener); this._native.removeEvent(type, listener);
}; },
web2d.peer.svg.ElementPeer.prototype.setSize = function(width, height) { setSize : function(width, height) {
if ($defined(width) && this._size.width != parseInt(width)) { if ($defined(width) && this._size.width != parseInt(width)) {
this._size.width = parseInt(width); this._size.width = parseInt(width);
this._native.setAttribute('width', parseInt(width)); this._native.setAttribute('width', parseInt(width));
@ -105,38 +103,37 @@ web2d.peer.svg.ElementPeer.prototype.setSize = function(width, height) {
} }
web2d.peer.utils.EventUtils.broadcastChangeEvent(this, "strokeStyle"); web2d.peer.utils.EventUtils.broadcastChangeEvent(this, "strokeStyle");
}; },
web2d.peer.svg.ElementPeer.prototype.getSize = function() { getSize : function() {
return {width:this._size.width,height:this._size.height}; return {width:this._size.width,height:this._size.height};
}; },
web2d.peer.svg.ElementPeer.prototype.setFill = function(color, opacity) { setFill : function(color, opacity) {
if ($defined(color)) { if ($defined(color)) {
this._native.setAttribute('fill', color); this._native.setAttribute('fill', color);
} }
if ($defined(opacity)) { if ($defined(opacity)) {
this._native.setAttribute('fill-opacity', opacity); this._native.setAttribute('fill-opacity', opacity);
} }
}; },
web2d.peer.svg.ElementPeer.prototype.getFill = function() { getFill : function() {
var color = this._native.getAttribute('fill'); var color = this._native.getAttribute('fill');
var opacity = this._native.getAttribute('fill-opacity'); var opacity = this._native.getAttribute('fill-opacity');
return {color:color, opacity:Number(opacity)}; return {color:color, opacity:Number(opacity)};
}; },
web2d.peer.svg.ElementPeer.prototype.getStroke = function() { getStroke : function() {
var vmlStroke = this._native; var vmlStroke = this._native;
var color = vmlStroke.getAttribute('stroke'); var color = vmlStroke.getAttribute('stroke');
var dashstyle = this._stokeStyle; var dashstyle = this._stokeStyle;
var opacity = vmlStroke.getAttribute('stroke-opacity'); var opacity = vmlStroke.getAttribute('stroke-opacity');
var width = vmlStroke.getAttribute('stroke-width'); var width = vmlStroke.getAttribute('stroke-width');
return {color: color, style: dashstyle, opacity: opacity, width: 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]}; setStroke : function(width, style, color, opacity) {
web2d.peer.svg.ElementPeer.prototype.setStroke = function(width, style, color, opacity) {
if ($defined(width)) { if ($defined(width)) {
this._native.setAttribute('stroke-width', width + "px"); this._native.setAttribute('stroke-width', width + "px");
} }
@ -167,67 +164,74 @@ web2d.peer.svg.ElementPeer.prototype.setStroke = function(width, style, color, o
if ($defined(opacity)) { if ($defined(opacity)) {
this._native.setAttribute('stroke-opacity', opacity); this._native.setAttribute('stroke-opacity', opacity);
} }
}; },
/* /*
* style='visibility: visible' * style='visibility: visible'
*/ */
web2d.peer.svg.ElementPeer.prototype.setVisibility = function(isVisible) { setVisibility : function(isVisible) {
this._native.setAttribute('visibility', (isVisible) ? 'visible' : 'hidden'); this._native.setAttribute('visibility', (isVisible) ? 'visible' : 'hidden');
}; },
web2d.peer.svg.ElementPeer.prototype.isVisible = function() { isVisible : function() {
var visibility = this._native.getAttribute('visibility'); var visibility = this._native.getAttribute('visibility');
return !(visibility == 'hidden'); return !(visibility == 'hidden');
}; },
web2d.peer.svg.ElementPeer.prototype.updateStrokeStyle = function() { updateStrokeStyle : function() {
var strokeStyle = this._stokeStyle; var strokeStyle = this._stokeStyle;
if (this.getParent()) { if (this.getParent()) {
if (strokeStyle && strokeStyle != 'solid') { if (strokeStyle && strokeStyle != 'solid') {
this.setStroke(null, strokeStyle); this.setStroke(null, strokeStyle);
} }
} }
}; },
web2d.peer.svg.ElementPeer.prototype.attachChangeEventListener = function(type, listener) { attachChangeEventListener : function(type, listener) {
var listeners = this.getChangeEventListeners(type); var listeners = this.getChangeEventListeners(type);
if (!$defined(listener)) { if (!$defined(listener)) {
throw "Listener can not be null"; throw "Listener can not be null";
} }
listeners.push(listener); listeners.push(listener);
}; },
web2d.peer.svg.ElementPeer.prototype.getChangeEventListeners = function(type) { getChangeEventListeners : function(type) {
var listeners = this._changeListeners[type]; var listeners = this._changeListeners[type];
if (!$defined(listeners)) { if (!$defined(listeners)) {
listeners = []; listeners = [];
this._changeListeners[type] = listeners; this._changeListeners[type] = listeners;
} }
return listeners; return listeners;
}; },
web2d.peer.svg.ElementPeer.prototype.positionRelativeTo = function(elem, options) { positionRelativeTo : function(elem, options) {
options = !$defined(options) ? {} : options; options = !$defined(options) ? {} : options;
options['relativeTo'] = $(this._native); options['relativeTo'] = $(this._native);
elem.position(options); elem.position(options);
}; },
/** /**
* Move element to the front * Move element to the front
*/ */
web2d.peer.svg.ElementPeer.prototype.moveToFront = function() { moveToFront : function() {
this._native.parentNode.appendChild(this._native); this._native.parentNode.appendChild(this._native);
}; },
/** /**
* Move element to the back * Move element to the back
*/ */
web2d.peer.svg.ElementPeer.prototype.moveToBack = function() { moveToBack : function() {
this._native.parentNode.insertBefore(this._native, this._native.parentNode.firstChild); this._native.parentNode.insertBefore(this._native, this._native.parentNode.firstChild);
}; },
web2d.peer.svg.ElementPeer.prototype.setCursor = function(type) { setCursor : function(type) {
this._native.style.cursor = type; this._native.style.cursor = type;
}; }
});
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.__stokeStyleToStrokDasharray = {solid:[],dot:[1,3],dash:[4,3],longdash:[10,2],dashdot:[5,3,1,3]};

View File

@ -16,51 +16,44 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.ElipsePeer = function() web2d.peer.svg.ElipsePeer = new Class({
{ Extends: web2d.peer.svg.ElementPeer,
initialize : function() {
var svgElement = window.document.createElementNS(this.svgNamespace, 'ellipse'); var svgElement = window.document.createElementNS(this.svgNamespace, 'ellipse');
web2d.peer.svg.ElementPeer.call(this, svgElement); this.parent(svgElement);
this.attachChangeEventListener("strokeStyle", web2d.peer.svg.ElementPeer.prototype.updateStrokeStyle); this.attachChangeEventListener("strokeStyle", web2d.peer.svg.ElementPeer.prototype.updateStrokeStyle);
this._position = {x:0, y:0}; this._position = {x:0, y:0};
}; },
objects.extend(web2d.peer.svg.ElipsePeer, web2d.peer.svg.ElementPeer); setSize : function(width, height) {
this.parent(width, height);
web2d.peer.svg.ElipsePeer.prototype.setSize = function(width, height) if ($defined(width)) {
{
web2d.peer.svg.ElipsePeer.superClass.setSize.call(this, width, height);
if ($defined(width))
{
this._native.setAttribute('rx', width / 2); this._native.setAttribute('rx', width / 2);
} }
if ($defined(height)) if ($defined(height)) {
{
this._native.setAttribute('ry', height / 2); this._native.setAttribute('ry', height / 2);
} }
var pos = this.getPosition(); var pos = this.getPosition();
this.setPosition(pos.x, pos.y); this.setPosition(pos.x, pos.y);
}; },
web2d.peer.svg.ElipsePeer.prototype.setPosition = function(cx, cy) setPosition : function(cx, cy) {
{
var size = this.getSize(); var size = this.getSize();
cx = cx + size.width / 2; cx = cx + size.width / 2;
cy = cy + size.height / 2; cy = cy + size.height / 2;
if ($defined(cx)) if ($defined(cx)) {
{
this._native.setAttribute('cx', cx); this._native.setAttribute('cx', cx);
} }
if ($defined(cy)) if ($defined(cy)) {
{
this._native.setAttribute('cy', cy); this._native.setAttribute('cy', cy);
} }
}; },
web2d.peer.svg.ElipsePeer.prototype.getPosition = function() getPosition : function() {
{
return this._position; return this._position;
}; }
});

View File

@ -16,93 +16,77 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.Font = function() web2d.peer.svg.Font = new Class({
{ initialize : function() {
this._size = 10; this._size = 10;
this._style = "normal"; this._style = "normal";
this._weight = "normal"; this._weight = "normal";
}; },
web2d.peer.svg.Font.prototype.init = function(args) init : function(args) {
{ if ($defined(args.size)) {
if ($defined(args.size))
{
this._size = parseInt(args.size); this._size = parseInt(args.size);
} }
if ($defined(args.style)) if ($defined(args.style)) {
{
this._style = args.style; this._style = args.style;
} }
if ($defined(args.weight)) if ($defined(args.weight)) {
{
this._weight = args.weight; this._weight = args.weight;
} }
}; },
web2d.peer.svg.Font.prototype.getHtmlSize = function (scale) getHtmlSize : function (scale) {
{
var result = 0; var result = 0;
if (this._size == 6) if (this._size == 6) {
{
result = this._size * scale.height * 43 / 32; result = this._size * scale.height * 43 / 32;
} }
if (this._size == 8) if (this._size == 8) {
{
result = this._size * scale.height * 42 / 32; result = this._size * scale.height * 42 / 32;
} }
else if (this._size == 10) else if (this._size == 10) {
{
result = this._size * scale.height * 42 / 32; result = this._size * scale.height * 42 / 32;
} }
else if (this._size == 15) else if (this._size == 15) {
{
result = this._size * scale.height * 42 / 32; result = this._size * scale.height * 42 / 32;
} }
return result; return result;
}; },
web2d.peer.svg.Font.prototype.getGraphSize = function (scale) getGraphSize : function () {
{
return this._size * 43 / 32; return this._size * 43 / 32;
}; },
web2d.peer.svg.Font.prototype.getSize = function () getSize : function () {
{
return parseInt(this._size); return parseInt(this._size);
}; },
web2d.peer.svg.Font.prototype.getStyle = function () getStyle : function () {
{
return this._style; return this._style;
}; },
web2d.peer.svg.Font.prototype.getWeight = function () getWeight : function () {
{
return this._weight; return this._weight;
}; },
web2d.peer.svg.Font.prototype.setSize = function (size) setSize : function (size) {
{
this._size = size; this._size = size;
}; },
web2d.peer.svg.Font.prototype.setStyle = function (style) setStyle : function (style) {
{
this._style = style; this._style = style;
}; },
web2d.peer.svg.Font.prototype.setWeight = function (weight) setWeight : function (weight) {
{
this._weight = weight; this._weight = weight;
}; },
web2d.peer.svg.Font.prototype.getWidthMargin = function () getWidthMargin : function () {
{
var result = 0; var result = 0;
if (this._size == 10 || this._size == 6) if (this._size == 10 || this._size == 6) {
{
result = 4; result = 4;
} }
return result; return result;
}; }
});

View File

@ -16,38 +16,30 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.GroupPeer = function() web2d.peer.svg.GroupPeer = new Class({
{ Extends: web2d.peer.svg.ElementPeer,
initialize : function() {
var svgElement = window.document.createElementNS(this.svgNamespace, 'g'); var svgElement = window.document.createElementNS(this.svgNamespace, 'g');
web2d.peer.svg.ElementPeer.call(this, svgElement); this.parent(svgElement);
this._native.setAttribute("preserveAspectRatio", "none"); this._native.setAttribute("preserveAspectRatio", "none");
this._coordSize = {width:1,height:1}; this._coordSize = {width:1,height:1};
this._native.setAttribute("focusable", "true"); this._native.setAttribute("focusable", "true");
this._position = {x:0,y:0}; this._position = {x:0,y:0};
this._coordOrigin = {x:0,y:0}; this._coordOrigin = {x:0,y:0};
}; },
objects.extend(web2d.peer.svg.GroupPeer, web2d.peer.svg.ElementPeer); setCoordSize : function(width, height) {
/*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)
{
var change = this._coordSize.width != width || this._coordSize.height != height; var change = this._coordSize.width != width || this._coordSize.height != height;
this._coordSize.width = width; this._coordSize.width = width;
this._coordSize.height = height; this._coordSize.height = height;
if (change) if (change)
this.updateTransform(); this.updateTransform();
web2d.peer.utils.EventUtils.broadcastChangeEvent(this, "strokeStyle"); web2d.peer.utils.EventUtils.broadcastChangeEvent(this, "strokeStyle");
}; },
web2d.peer.svg.GroupPeer.prototype.getCoordSize = function() getCoordSize : function() {
{
return {width:this._coordSize.width,height:this._coordSize.height}; return {width:this._coordSize.width,height:this._coordSize.height};
}; },
/** /**
* http://www.w3.org/TR/SVG/coords.html#TransformAttribute * http://www.w3.org/TR/SVG/coords.html#TransformAttribute
@ -70,8 +62,7 @@ web2d.peer.svg.GroupPeer.prototype.getCoordSize = function()
* * skewY(<skew-angle>), which specifies a skew transformation along the y-axis. * * skewY(<skew-angle>), which specifies a skew transformation along the y-axis.
**/ **/
web2d.peer.svg.GroupPeer.prototype.updateTransform = function() updateTransform : function() {
{
var sx = this._size.width / this._coordSize.width; var sx = this._size.width / this._coordSize.width;
var sy = this._size.height / this._coordSize.height; var sy = this._size.height / this._coordSize.height;
@ -79,60 +70,51 @@ web2d.peer.svg.GroupPeer.prototype.updateTransform = function()
var cy = this._position.y - this._coordOrigin.y * sy; var cy = this._position.y - this._coordOrigin.y * sy;
this._native.setAttribute("transform", "translate(" + cx + "," + cy + ") scale(" + sx + "," + sy + ")"); this._native.setAttribute("transform", "translate(" + cx + "," + cy + ") scale(" + sx + "," + sy + ")");
}; },
web2d.peer.svg.GroupPeer.prototype.setCoordOrigin = function(x, y) setCoordOrigin : function(x, y) {
{
var change = x != this._coordOrigin.x || y != this._coordOrigin.y; var change = x != this._coordOrigin.x || y != this._coordOrigin.y;
if ($defined(x)) if ($defined(x)) {
{
this._coordOrigin.x = x; this._coordOrigin.x = x;
} }
if ($defined(y)) if ($defined(y)) {
{
this._coordOrigin.y = y; this._coordOrigin.y = y;
} }
if (change) if (change)
this.updateTransform(); this.updateTransform();
}; },
web2d.peer.svg.GroupPeer.prototype.setSize = function(width, height) setSize : function(width, height) {
{
var change = width != this._size.width || height != this._size.height; var change = width != this._size.width || height != this._size.height;
web2d.peer.svg.GroupPeer.superClass.setSize.call(this, width, height); this.parent(width, height);
if (change) if (change)
this.updateTransform(); this.updateTransform();
}; },
web2d.peer.svg.GroupPeer.prototype.setPosition = function(x, y) setPosition : function(x, y) {
{
var change = x != this._position.x || y != this._position.y; var change = x != this._position.x || y != this._position.y;
if ($defined(x)) if ($defined(x)) {
{
this._position.x = parseInt(x); this._position.x = parseInt(x);
} }
if ($defined(y)) if ($defined(y)) {
{
this._position.y = parseInt(y); this._position.y = parseInt(y);
} }
if (change) if (change)
this.updateTransform(); this.updateTransform();
}; },
web2d.peer.svg.GroupPeer.prototype.getPosition = function() getPosition : function() {
{
return {x:this._position.x,y:this._position.y}; return {x:this._position.x,y:this._position.y};
}; },
web2d.peer.svg.GroupPeer.prototype.appendChild = function(child) appendChild : function(child) {
{ this.parent(child);
web2d.peer.svg.GroupPeer.superClass.appendChild.call(this, child);
web2d.peer.utils.EventUtils.broadcastChangeEvent(child, "onChangeCoordSize"); web2d.peer.utils.EventUtils.broadcastChangeEvent(child, "onChangeCoordSize");
}; },
web2d.peer.svg.GroupPeer.prototype.getCoordOrigin = function () getCoordOrigin : function () {
{
return {x:this._coordOrigin.x, y:this._coordOrigin.y}; return {x:this._coordOrigin.x, y:this._coordOrigin.y};
}; }
});

View File

@ -16,36 +16,31 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.ImagePeer = function() web2d.peer.svg.ImagePeer = new Class({
{ Extends: web2d.peer.svg.ElementPeer,
initialize : function() {
var svgElement = window.document.createElementNS(this.svgNamespace, 'image'); var svgElement = window.document.createElementNS(this.svgNamespace, 'image');
web2d.peer.svg.ElementPeer.call(this, svgElement); this.parent(svgElement);
this._position = {x:0,y:0}; this._position = {x:0,y:0};
this._href = ""; this._href = "";
}; },
objects.extend(web2d.peer.svg.ImagePeer, web2d.peer.svg.ElementPeer); setPosition : function(x, y) {
web2d.peer.svg.ImagePeer.prototype.setPosition = function(x, y)
{
this._position = {x:x, y:y}; this._position = {x:x, y:y};
this._native.setAttribute('y', y); this._native.setAttribute('y', y);
this._native.setAttribute('x', x); this._native.setAttribute('x', x);
}; },
getPosition : function() {
web2d.peer.svg.ImagePeer.prototype.getPosition = function()
{
return this._position; return this._position;
}; },
web2d.peer.svg.ImagePeer.prototype.setHref = function(url) setHref : function(url) {
{
this._native.setAttributeNS(this.linkNamespace, "href", url); this._native.setAttributeNS(this.linkNamespace, "href", url);
this._href = url; this._href = url;
}; },
web2d.peer.svg.ImagePeer.prototype.getHref = function() getHref : function() {
{
return this._href; return this._href;
}; }
});

View File

@ -16,52 +16,46 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.LinePeer = function() web2d.peer.svg.LinePeer = new Class({
{ Extends: web2d.peer.svg.ElementPeer,
initialize : function() {
var svgElement = window.document.createElementNS(this.svgNamespace, 'line'); var svgElement = window.document.createElementNS(this.svgNamespace, 'line');
web2d.peer.svg.ElementPeer.call(this, svgElement); this.parent(svgElement);
this.attachChangeEventListener("strokeStyle", web2d.peer.svg.ElementPeer.prototype.updateStrokeStyle); this.attachChangeEventListener("strokeStyle", web2d.peer.svg.ElementPeer.prototype.updateStrokeStyle);
}; },
objects.extend(web2d.peer.svg.LinePeer, web2d.peer.svg.ElementPeer); setFrom : function(x1, y1) {
web2d.peer.svg.LinePeer.prototype.setFrom = function(x1, y1)
{
this._x1 = x1; this._x1 = x1;
this._y1 = y1; this._y1 = y1;
this._native.setAttribute('x1', x1); this._native.setAttribute('x1', x1);
this._native.setAttribute('y1', y1); this._native.setAttribute('y1', y1);
}; },
web2d.peer.svg.LinePeer.prototype.setTo = function(x2, y2) setTo : function(x2, y2) {
{
this._x2 = x2; this._x2 = x2;
this._y2 = y2; this._y2 = y2;
this._native.setAttribute('x2', x2); this._native.setAttribute('x2', x2);
this._native.setAttribute('y2', y2); this._native.setAttribute('y2', y2);
}; },
web2d.peer.svg.LinePeer.prototype.getFrom = function(){ getFrom : function() {
return new core.Point(this._x1, this._y1); return new core.Point(this._x1, this._y1);
}; },
web2d.peer.svg.LinePeer.prototype.getTo = function(){ getTo : function() {
return new core.Point(this._x2, this._y2); return new core.Point(this._x2, this._y2);
}; },
/* /*
* http://www.zvon.org/HowTo/Output/howto_jj_svg_27.html?at=marker-end * http://www.zvon.org/HowTo/Output/howto_jj_svg_27.html?at=marker-end
*/ */
web2d.peer.svg.LinePeer.prototype.setArrowStyle = function(startStyle, endStyle) setArrowStyle : function(startStyle, endStyle) {
{ if ($defined(startStyle)) {
if ($defined(startStyle))
{
// Todo: This must be implemented ... // Todo: This must be implemented ...
} }
if ($defined(endStyle)) if ($defined(endStyle)) {
{
// Todo: This must be implemented ... // Todo: This must be implemented ...
} }
}; }
});

View File

@ -16,106 +16,89 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.PolyLinePeer = function() web2d.peer.svg.PolyLinePeer = new Class({
{ Extends: web2d.peer.svg.ElementPeer,
initialize : function() {
var svgElement = window.document.createElementNS(this.svgNamespace, 'polyline'); var svgElement = window.document.createElementNS(this.svgNamespace, 'polyline');
web2d.peer.svg.ElementPeer.call(this, svgElement); this.parent(svgElement);
this.setFill("none"); this.setFill("none");
this.breakDistance = 10; this.breakDistance = 10;
}; },
objects.extend(web2d.peer.svg.PolyLinePeer, web2d.peer.svg.ElementPeer); setFrom : function(x1, y1) {
web2d.peer.svg.PolyLinePeer.prototype.setFrom = function(x1, y1)
{
this._x1 = x1; this._x1 = x1;
this._y1 = y1; this._y1 = y1;
this._updatePath(); this._updatePath();
}; },
web2d.peer.svg.PolyLinePeer.prototype.setTo = function(x2, y2) setTo : function(x2, y2) {
{
this._x2 = x2; this._x2 = x2;
this._y2 = y2; this._y2 = y2;
this._updatePath(); this._updatePath();
}; },
web2d.peer.svg.PolyLinePeer.prototype.setStrokeWidth = function(width) setStrokeWidth : function(width) {
{
this._native.setAttribute('stroke-width', width); this._native.setAttribute('stroke-width', width);
}; },
web2d.peer.svg.PolyLinePeer.prototype.setColor = function(color) setColor : function(color) {
{
this._native.setAttribute('stroke', color); this._native.setAttribute('stroke', color);
}; },
web2d.peer.svg.PolyLinePeer.prototype.setStyle = function(style) setStyle : function(style) {
{
this._style = style; this._style = style;
this._updatePath(); this._updatePath();
}; },
web2d.peer.svg.PolyLinePeer.prototype.getStyle = function() getStyle : function() {
{
return this._style; return this._style;
}; },
web2d.peer.svg.PolyLinePeer.prototype._updatePath = function() _updatePath : function() {
{ if (this._style == "Curved") {
if (this._style == "Curved")
{
this._updateMiddleCurvePath(); this._updateMiddleCurvePath();
} }
else if (this._style == "Straight") else if (this._style == "Straight") {
{
this._updateStraightPath(); this._updateStraightPath();
} }
else else {
{
this._updateCurvePath(); this._updateCurvePath();
} }
}; },
web2d.peer.svg.PolyLinePeer.prototype._updateStraightPath = function() _updateStraightPath : function() {
{ if ($defined(this._x1) && $defined(this._x2) && $defined(this._y1) && $defined(this._y2)) {
if ($defined(this._x1) && $defined(this._x2) && $defined(this._y1) && $defined(this._y2))
{
var path = web2d.PolyLine.buildStraightPath(this.breakDistance, this._x1, this._y1, this._x2, this._y2); var path = web2d.PolyLine.buildStraightPath(this.breakDistance, this._x1, this._y1, this._x2, this._y2);
this._native.setAttribute('points', path); this._native.setAttribute('points', path);
} }
}; },
web2d.peer.svg.PolyLinePeer.prototype._updateMiddleCurvePath = function() _updateMiddleCurvePath : function() {
{
var x1 = this._x1; var x1 = this._x1;
var y1 = this._y1; var y1 = this._y1;
var x2 = this._x2; var x2 = this._x2;
var y2 = this._y2; var y2 = this._y2;
if ($defined(x1) && $defined(x2) && $defined(y1) && $defined(y2)) if ($defined(x1) && $defined(x2) && $defined(y1) && $defined(y2)) {
{
var diff = x2 - x1; var diff = x2 - x1;
var middlex = (diff / 2) + x1; var middlex = (diff / 2) + x1;
var signx = 1; var signx = 1;
var signy = 1; var signy = 1;
if (diff < 0) if (diff < 0) {
{
signx = -1; signx = -1;
} }
if (y2 < y1) if (y2 < y1) {
{
signy = -1; signy = -1;
} }
var path = x1 + ", " + y1 + " " + (middlex - 10 * signx) + ", " + y1 + " " + middlex + ", " + (y1 + 10 * signy) + " " + middlex + ", " + (y2 - 10 * signy) + " " + (middlex + 10 * signx) + ", " + y2 + " " + x2 + ", " + y2; 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); this._native.setAttribute('points', path);
} }
}; },
web2d.peer.svg.PolyLinePeer.prototype._updateCurvePath = function() _updateCurvePath : function() {
{ if ($defined(this._x1) && $defined(this._x2) && $defined(this._y1) && $defined(this._y2)) {
if ($defined(this._x1) && $defined(this._x2) && $defined(this._y1) && $defined(this._y2))
{
var path = web2d.PolyLine.buildCurvedPath(this.breakDistance, this._x1, this._y1, this._x2, this._y2); var path = web2d.PolyLine.buildCurvedPath(this.breakDistance, this._x1, this._y1, this._x2, this._y2);
this._native.setAttribute('points', path); this._native.setAttribute('points', path);
} }
}; }
});

View File

@ -19,45 +19,39 @@
/** /**
* http://www.w3.org/TR/SVG/shapes.html#RectElement * http://www.w3.org/TR/SVG/shapes.html#RectElement
*/ */
web2d.peer.svg.RectPeer = function(arc) web2d.peer.svg.RectPeer = new Class({
{ Extends: web2d.peer.svg.ElementPeer,
initialize : function(arc) {
var svgElement = window.document.createElementNS(this.svgNamespace, 'rect'); var svgElement = window.document.createElementNS(this.svgNamespace, 'rect');
web2d.peer.svg.ElementPeer.call(this, svgElement); this.parent(svgElement);
this._arc = arc; this._arc = arc;
this.attachChangeEventListener("strokeStyle", web2d.peer.svg.ElementPeer.prototype.updateStrokeStyle); this.attachChangeEventListener("strokeStyle", web2d.peer.svg.ElementPeer.prototype.updateStrokeStyle);
}; },
objects.extend(web2d.peer.svg.RectPeer, web2d.peer.svg.ElementPeer); setPosition :function(x, y) {
if ($defined(x)) {
web2d.peer.svg.RectPeer.prototype.setPosition = function(x, y)
{
if ($defined(x))
{
this._native.setAttribute('x', parseInt(x)); this._native.setAttribute('x', parseInt(x));
} }
if ($defined(y)) if ($defined(y)) {
{
this._native.setAttribute('y', parseInt(y)); this._native.setAttribute('y', parseInt(y));
} }
}; },
web2d.peer.svg.RectPeer.prototype.getPosition = function() getPosition :function() {
{
var x = this._native.getAttribute('x'); var x = this._native.getAttribute('x');
var y = this._native.getAttribute('y'); var y = this._native.getAttribute('y');
return {x:parseInt(x),y:parseInt(y)}; return {x:parseInt(x),y:parseInt(y)};
}; },
web2d.peer.svg.RectPeer.prototype.setSize = function(width, height) setSize :function(width, height) {
{ this.parent(width, height);
web2d.peer.svg.RectPeer.superClass.setSize.call(this, width, height);
var min = width < height ? width : height; var min = width < height ? width : height;
if ($defined(this._arc)) if ($defined(this._arc)) {
{
// Transform percentages to SVG format. // Transform percentages to SVG format.
var arc = (min / 2) * this._arc; var arc = (min / 2) * this._arc;
this._native.setAttribute('rx', arc); this._native.setAttribute('rx', arc);
this._native.setAttribute('ry', arc); this._native.setAttribute('ry', arc);
} }
}; }
});

View File

@ -16,20 +16,18 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.TahomaFont = function() web2d.peer.svg.TahomaFont = new Class({
{ Extends: web2d.peer.svg.Font,
web2d.peer.svg.Font.call(this); initialize : function() {
this.parent();
this._fontFamily = "tahoma"; this._fontFamily = "tahoma";
}; },
objects.extend(web2d.peer.svg.TahomaFont, web2d.peer.svg.Font); getFontFamily : function () {
web2d.peer.svg.TahomaFont.prototype.getFontFamily=function ()
{
return this._fontFamily; return this._fontFamily;
}; },
web2d.peer.svg.TahomaFont.prototype.getFont=function () getFont : function () {
{
return web2d.Font.TAHOMA; return web2d.Font.TAHOMA;
}; }
});

View File

@ -16,29 +16,20 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.TextPeer = function() { web2d.peer.svg.TextPeer = new Class({
Extends: web2d.peer.svg.ElementPeer,
initialize : function() {
var svgElement = window.document.createElementNS(this.svgNamespace, 'text'); var svgElement = window.document.createElementNS(this.svgNamespace, 'text');
web2d.peer.svg.ElementPeer.call(this, svgElement); this.parent(svgElement);
this._position = {x:0,y:0}; this._position = {x:0,y:0};
this._font = new web2d.Font("Arial", this); this._font = new web2d.Font("Arial", this);
}; },
objects.extend(web2d.peer.svg.TextPeer, web2d.peer.svg.ElementPeer); appendChild : function(element) {
//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); this._native.appendChild(element._native);
}; },
web2d.peer.svg.TextPeer.prototype.setText = function(text) { setText : function(text) {
text = core.Utils.escapeInvalidTags(text); text = core.Utils.escapeInvalidTags(text);
var child = this._native.firstChild; var child = this._native.firstChild;
if ($defined(child)) { if ($defined(child)) {
@ -47,13 +38,13 @@ web2d.peer.svg.TextPeer.prototype.setText = function(text) {
this._text = text; this._text = text;
var textNode = window.document.createTextNode(text); var textNode = window.document.createTextNode(text);
this._native.appendChild(textNode); this._native.appendChild(textNode);
}; },
web2d.peer.svg.TextPeer.prototype.getText = function() { getText : function() {
return this._text; return this._text;
}; },
web2d.peer.svg.TextPeer.prototype.setPosition = function(x, y) { setPosition : function(x, y) {
this._position = {x:x, y:y}; this._position = {x:x, y:y};
var height = this._font.getSize(); var height = this._font.getSize();
if ($defined(this._parent) && $defined(this._native.getBBox)) if ($defined(this._parent) && $defined(this._native.getBBox))
@ -62,13 +53,13 @@ web2d.peer.svg.TextPeer.prototype.setPosition = function(x, y) {
this._native.setAttribute('y', y + size * 3 / 4); this._native.setAttribute('y', y + size * 3 / 4);
//y+size/2 //y+size/2
this._native.setAttribute('x', x); this._native.setAttribute('x', x);
}; },
web2d.peer.svg.TextPeer.prototype.getPosition = function() { getPosition : function() {
return this._position; return this._position;
}; },
web2d.peer.svg.TextPeer.prototype.setFont = function(font, size, style, weight) { setFont : function(font, size, style, weight) {
if ($defined(font)) { if ($defined(font)) {
this._font = new web2d.Font(font, this); this._font = new web2d.Font(font, this);
} }
@ -82,9 +73,9 @@ web2d.peer.svg.TextPeer.prototype.setFont = function(font, size, style, weight)
this._font.setSize(size); this._font.setSize(size);
} }
this._updateFontStyle(); this._updateFontStyle();
}; },
web2d.peer.svg.TextPeer.prototype._updateFontStyle = function() { _updateFontStyle : function() {
this._native.setAttribute('font-family', this._font.getFontFamily()); this._native.setAttribute('font-family', this._font.getFontFamily());
this._native.setAttribute('font-size', this._font.getGraphSize()); this._native.setAttribute('font-size', this._font.getGraphSize());
this._native.setAttribute('font-style', this._font.getStyle()); this._native.setAttribute('font-style', this._font.getStyle());
@ -93,70 +84,71 @@ web2d.peer.svg.TextPeer.prototype._updateFontStyle = function() {
var scale = this._font.getFontScale(); var scale = this._font.getFontScale();
this._native.xFontScale = scale.toFixed(1); this._native.xFontScale = scale.toFixed(1);
}; },
web2d.peer.svg.TextPeer.prototype.setColor = function(color) { setColor : function(color) {
this._native.setAttribute('fill', color); this._native.setAttribute('fill', color);
}; },
web2d.peer.svg.TextPeer.prototype.getColor = function() { getColor : function() {
return this._native.getAttribute('fill'); return this._native.getAttribute('fill');
}; },
web2d.peer.svg.TextPeer.prototype.setTextSize = function (size) { setTextSize : function (size) {
this._font.setSize(size); this._font.setSize(size);
this._updateFontStyle(); this._updateFontStyle();
}; },
web2d.peer.svg.TextPeer.prototype.setContentSize = function(width, height) { setContentSize : function(width, height) {
this._native.xTextSize = width.toFixed(1) + "," + height.toFixed(1); this._native.xTextSize = width.toFixed(1) + "," + height.toFixed(1);
}; },
web2d.peer.svg.TextPeer.prototype.setStyle = function (style) { setStyle : function (style) {
this._font.setStyle(style); this._font.setStyle(style);
this._updateFontStyle(); this._updateFontStyle();
}; },
web2d.peer.svg.TextPeer.prototype.setWeight = function (weight) { setWeight : function (weight) {
this._font.setWeight(weight); this._font.setWeight(weight);
this._updateFontStyle(); this._updateFontStyle();
}; },
web2d.peer.svg.TextPeer.prototype.setFontFamily = function (family) { setFontFamily : function (family) {
var oldFont = this._font; var oldFont = this._font;
this._font = new web2d.Font(family, this); this._font = new web2d.Font(family, this);
this._font.setSize(oldFont.getSize()); this._font.setSize(oldFont.getSize());
this._font.setStyle(oldFont.getStyle()); this._font.setStyle(oldFont.getStyle());
this._font.setWeight(oldFont.getWeight()); this._font.setWeight(oldFont.getWeight());
this._updateFontStyle(); this._updateFontStyle();
}; },
web2d.peer.svg.TextPeer.prototype.getFont = function () { getFont : function () {
return { return {
font:this._font.getFont(), font:this._font.getFont(),
size:parseInt(this._font.getSize()), size:parseInt(this._font.getSize()),
style:this._font.getStyle(), style:this._font.getStyle(),
weight:this._font.getWeight() weight:this._font.getWeight()
}; };
}; },
web2d.peer.svg.TextPeer.prototype.setSize = function (size) { setSize : function (size) {
this._font.setSize(size); this._font.setSize(size);
this._updateFontStyle(); this._updateFontStyle();
}; },
web2d.peer.svg.TextPeer.prototype.getWidth = function () { getWidth : function () {
var computedWidth = this._native.getBBox().width; var computedWidth = this._native.getBBox().width;
var width = parseInt(computedWidth); var width = parseInt(computedWidth);
width = width + this._font.getWidthMargin(); width = width + this._font.getWidthMargin();
return width; return width;
}; },
web2d.peer.svg.TextPeer.prototype.getHeight = function () { getHeight : function () {
var computedHeight = this._native.getBBox().height; var computedHeight = this._native.getBBox().height;
return parseInt(computedHeight); return parseInt(computedHeight);
}; },
web2d.peer.svg.TextPeer.prototype.getHtmlFontSize = function () { getHtmlFontSize : function () {
return this._font.getHtmlSize(); return this._font.getHtmlSize();
}; }
});

View File

@ -16,20 +16,18 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.TimesFont = function() web2d.peer.svg.TimesFont = new Class({
{ Extends: web2d.peer.svg.Font,
web2d.peer.svg.Font.call(this); initialize : function() {
this.parent();
this._fontFamily = "times"; this._fontFamily = "times";
}; },
objects.extend(web2d.peer.svg.TimesFont, web2d.peer.svg.Font); getFontFamily :function () {
web2d.peer.svg.TimesFont.prototype.getFontFamily=function ()
{
return this._fontFamily; return this._fontFamily;
}; },
web2d.peer.svg.TimesFont.prototype.getFont=function () getFont : function () {
{
return web2d.Font.TIMES; return web2d.Font.TIMES;
}; }
});

View File

@ -16,20 +16,18 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.VerdanaFont = function() web2d.peer.svg.VerdanaFont = new Class({
{ Extends: web2d.peer.svg.Font,
web2d.peer.svg.Font.call(this); initialize : function() {
this.parent();
this._fontFamily = "verdana"; this._fontFamily = "verdana";
}; },
objects.extend(web2d.peer.svg.VerdanaFont, web2d.peer.svg.Font); getFontFamily : function () {
web2d.peer.svg.VerdanaFont.prototype.getFontFamily=function ()
{
return this._fontFamily; return this._fontFamily;
}; },
web2d.peer.svg.VerdanaFont.prototype.getFont=function () getFont : function () {
{
return web2d.Font.VERDANA; return web2d.Font.VERDANA;
}; }
});

View File

@ -16,19 +16,17 @@
* limitations under the License. * limitations under the License.
*/ */
web2d.peer.svg.WorkspacePeer = function(element) web2d.peer.svg.WorkspacePeer = new Class({
{ Extends: web2d.peer.svg.ElementPeer,
initialize : function(element) {
this._element = element; this._element = element;
var svgElement = window.document.createElementNS(this.svgNamespace, 'svg'); var svgElement = window.document.createElementNS(this.svgNamespace, 'svg');
web2d.peer.svg.ElementPeer.call(this, svgElement); this.parent(svgElement);
this._native.setAttribute("focusable", "true"); this._native.setAttribute("focusable", "true");
this._native.setAttribute("id", "workspace"); this._native.setAttribute("id", "workspace");
this._native.setAttribute("preserveAspectRatio", "true"); this._native.setAttribute("preserveAspectRatio", "true");
}; },
objects.extend(web2d.peer.svg.WorkspacePeer, web2d.peer.svg.ElementPeer);
/** /**
* http://www.w3.org/TR/SVG/coords.html 7.7 The viewBox attribute * http://www.w3.org/TR/SVG/coords.html 7.7 The viewBox attribute
@ -40,84 +38,71 @@ objects.extend(web2d.peer.svg.WorkspacePeer, web2d.peer.svg.ElementPeer);
* *
*/ */
web2d.peer.svg.WorkspacePeer.prototype.setCoordSize = function(width, height) setCoordSize : function (width, height) {
{
var viewBox = this._native.getAttribute('viewBox'); var viewBox = this._native.getAttribute('viewBox');
var coords = [0,0,0,0]; var coords = [0,0,0,0];
if (viewBox != null) if (viewBox != null) {
{
coords = viewBox.split(/ /); coords = viewBox.split(/ /);
} }
if ($defined(width)) if ($defined(width)) {
{
coords[2] = width; coords[2] = width;
} }
if ($defined(height)) if ($defined(height)) {
{
coords[3] = height; coords[3] = height;
} }
this._native.setAttribute('viewBox', coords.join(" ")); this._native.setAttribute('viewBox', coords.join(" "));
this._native.setAttribute("preserveAspectRatio", "none"); this._native.setAttribute("preserveAspectRatio", "none");
web2d.peer.utils.EventUtils.broadcastChangeEvent(this, "strokeStyle"); web2d.peer.utils.EventUtils.broadcastChangeEvent(this, "strokeStyle");
}; },
web2d.peer.svg.WorkspacePeer.prototype.getCoordSize = function() getCoordSize : function () {
{
var viewBox = this._native.getAttribute('viewBox'); var viewBox = this._native.getAttribute('viewBox');
var coords = [1,1,1,1]; var coords = [1,1,1,1];
if (viewBox != null) if (viewBox != null) {
{
coords = viewBox.split(/ /); coords = viewBox.split(/ /);
} }
return {width:coords[2],height:coords[3]}; return {width:coords[2],height:coords[3]};
}; },
web2d.peer.svg.WorkspacePeer.prototype.setCoordOrigin = function(x, y) setCoordOrigin : function (x, y) {
{
var viewBox = this._native.getAttribute('viewBox'); var viewBox = this._native.getAttribute('viewBox');
// ViewBox min-x ,min-y by default initializated with 0 and 0. // ViewBox min-x ,min-y by default initializated with 0 and 0.
var coords = [0,0,0,0]; var coords = [0,0,0,0];
if (viewBox != null) if (viewBox != null) {
{
coords = viewBox.split(/ /); coords = viewBox.split(/ /);
} }
if ($defined(x)) if ($defined(x)) {
{
coords[0] = x; coords[0] = x;
} }
if ($defined(y)) if ($defined(y)) {
{
coords[1] = y; coords[1] = y;
} }
this._native.setAttribute('viewBox', coords.join(" ")); this._native.setAttribute('viewBox', coords.join(" "));
}; },
web2d.peer.svg.WorkspacePeer.prototype.appendChild = function(child) appendChild : function (child) {
{ this.parent(child);
web2d.peer.svg.WorkspacePeer.superClass.appendChild.call(this, child);
web2d.peer.utils.EventUtils.broadcastChangeEvent(child, "onChangeCoordSize"); web2d.peer.utils.EventUtils.broadcastChangeEvent(child, "onChangeCoordSize");
}; },
web2d.peer.svg.WorkspacePeer.prototype.getCoordOrigin = function(child) getCoordOrigin : function (child) {
{
var viewBox = this._native.getAttribute('viewBox'); var viewBox = this._native.getAttribute('viewBox');
var coords = [1,1,1,1]; var coords = [1,1,1,1];
if (viewBox != null) if (viewBox != null) {
{
coords = viewBox.split(/ /); coords = viewBox.split(/ /);
} }
var x = parseFloat(coords[0]); var x = parseFloat(coords[0]);
var y = parseFloat(coords[1]); var y = parseFloat(coords[1]);
return {x:x,y:y}; return {x:x,y:y};
}; },
web2d.peer.svg.WorkspacePeer.prototype.getPosition = function() getPosition : function () {
{
return {x:0,y:0}; return {x:0,y:0};
}; }
});

View File

@ -31,9 +31,9 @@ web2d.peer.utils.EventUtils =
} }
var children = elementPeer.getChildren(); var children = elementPeer.getChildren();
for (var i = 0; i < children.length; i++) for (var j = 0; j < children.length; j++)
{ {
var child = children[i]; var child = children[j];
web2d.peer.utils.EventUtils.broadcastChangeEvent(child, type); web2d.peer.utils.EventUtils.broadcastChangeEvent(child, type);
} }
} }