You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
6857 lines
254 KiB
6857 lines
254 KiB
"use strict";
|
|
(self["webpackChunk"] = self["webpackChunk"] || []).push([[2462],{
|
|
|
|
/***/ 72462:
|
|
/*!*********************************!*\
|
|
!*** ./public/js/go/Figures.js ***!
|
|
\*********************************/
|
|
/***/ (function() {
|
|
|
|
|
|
function FigureParameter(name, def, min, max) {
|
|
if (min === void 0)
|
|
min = 0;
|
|
if (max === void 0)
|
|
max = Infinity;
|
|
this._name = name;
|
|
this._defaultValue = def;
|
|
this._minimum = min;
|
|
this._maximum = max;
|
|
}
|
|
;
|
|
Object.defineProperty(FigureParameter.prototype, "name", {
|
|
get: function() {
|
|
return this._name;
|
|
},
|
|
set: function(val) {
|
|
if (typeof val !== "string" || val === "")
|
|
throw new Error("Shape name must be a valid string.");
|
|
this._name = val;
|
|
}
|
|
});
|
|
Object.defineProperty(FigureParameter.prototype, "defaultValue", {
|
|
get: function() {
|
|
return this._defaultValue;
|
|
},
|
|
set: function(val) {
|
|
if (typeof val !== "number" || isNaN(val))
|
|
throw new Error("The default value must be a real number, not: " + val);
|
|
this._defaultValue = val;
|
|
}
|
|
});
|
|
Object.defineProperty(FigureParameter.prototype, "minimum", {
|
|
get: function() {
|
|
return this._minimum;
|
|
},
|
|
set: function(val) {
|
|
if (typeof val !== "number" || isNaN(val))
|
|
throw new Error("Minimum must be a real number, not: " + val);
|
|
this._minimum = val;
|
|
}
|
|
});
|
|
Object.defineProperty(FigureParameter.prototype, "maximum", {
|
|
get: function() {
|
|
return this._maximum;
|
|
},
|
|
set: function(val) {
|
|
if (typeof val !== "number" || isNaN(val))
|
|
throw new Error("Maximum must be a real number, not: " + val);
|
|
this._maximum = val;
|
|
}
|
|
});
|
|
go.Shape._FigureParameters = {};
|
|
go.Shape.getFigureParameter = function(figurename, index) {
|
|
var arr = go.Shape._FigureParameters[figurename];
|
|
if (!arr)
|
|
return null;
|
|
return (
|
|
/** @type {FigureParmeter} */
|
|
arr[index]
|
|
);
|
|
};
|
|
go.Shape.setFigureParameter = function(figurename, index, figparam) {
|
|
if (!(figparam instanceof FigureParameter))
|
|
throw new Error("Third argument to Shape.setFigureParameter is not FigureParameter: " + figparam);
|
|
if (figparam.defaultValue < figparam.minimum || figparam.defaultValue > figparam.maximum)
|
|
throw new Error("defaultValue must be between minimum and maximum, not: " + figparam.defaultValue);
|
|
var arr = go.Shape._FigureParameters[figurename];
|
|
if (!arr) {
|
|
arr = [];
|
|
go.Shape._FigureParameters[figurename] = arr;
|
|
}
|
|
arr[index] = figparam;
|
|
};
|
|
var _CachedPoints = [];
|
|
function tempPointAt(x, y) {
|
|
var temp = _CachedPoints.pop();
|
|
if (temp === void 0)
|
|
return new go.Point(x, y);
|
|
temp.x = x;
|
|
temp.y = y;
|
|
return temp;
|
|
}
|
|
;
|
|
function tempPoint() {
|
|
var temp = _CachedPoints.pop();
|
|
if (temp === void 0)
|
|
return new go.Point();
|
|
return temp;
|
|
}
|
|
;
|
|
function freePoint(temp) {
|
|
_CachedPoints.push(temp);
|
|
}
|
|
;
|
|
function getIntersection(p1x, p1y, p2x, p2y, q1x, q1y, q2x, q2y, result) {
|
|
if (!result)
|
|
result = new go.Point();
|
|
var dx1 = p1x - p2x;
|
|
var dx2 = q1x - q2x;
|
|
var x = NaN;
|
|
var y = NaN;
|
|
if (dx1 === 0) {
|
|
if (dx2 === 0) {
|
|
if (p1x === p2x) {
|
|
x = p1x;
|
|
y = p1y;
|
|
}
|
|
} else {
|
|
var m2 = (q1y - q2y) / dx2;
|
|
var b2 = q1y - m2 * q1x;
|
|
x = p1x;
|
|
y = m2 * x + b2;
|
|
}
|
|
} else {
|
|
if (dx2 === 0) {
|
|
var m1 = (p1y - p2y) / dx1;
|
|
var b1 = p1y - m1 * p1x;
|
|
x = q1x;
|
|
y = m1 * x + b1;
|
|
} else {
|
|
var m1 = (p1y - p2y) / dx1;
|
|
var m2 = (q1y - q2y) / dx2;
|
|
var b1 = p1y - m1 * p1x;
|
|
var b2 = q1y - m2 * q1x;
|
|
x = (b2 - b1) / (m1 - m2);
|
|
y = m1 * x + b1;
|
|
}
|
|
}
|
|
result.x = x;
|
|
result.y = y;
|
|
return result;
|
|
}
|
|
;
|
|
function breakUpBezier(startx, starty, c1x, c1y, c2x, c2y, endx, endy, fraction, curve1cp1, curve1cp2, midpoint, curve2cp1, curve2cp2) {
|
|
var fo = 1 - fraction;
|
|
var so = fraction;
|
|
var m1x = startx * fo + c1x * so;
|
|
var m1y = starty * fo + c1y * so;
|
|
var m2x = c1x * fo + c2x * so;
|
|
var m2y = c1y * fo + c2y * so;
|
|
var m3x = c2x * fo + endx * so;
|
|
var m3y = c2y * fo + endy * so;
|
|
var m12x = m1x * fo + m2x * so;
|
|
var m12y = m1y * fo + m2y * so;
|
|
var m23x = m2x * fo + m3x * so;
|
|
var m23y = m2y * fo + m3y * so;
|
|
var m123x = m12x * fo + m23x * so;
|
|
var m123y = m12y * fo + m23y * so;
|
|
curve1cp1.x = m1x;
|
|
curve1cp1.y = m1y;
|
|
curve1cp2.x = m12x;
|
|
curve1cp2.y = m12y;
|
|
midpoint.x = m123x;
|
|
midpoint.y = m123y;
|
|
curve2cp1.x = m23x;
|
|
curve2cp1.y = m23y;
|
|
curve2cp2.x = m3x;
|
|
curve2cp2.y = m3y;
|
|
}
|
|
;
|
|
var GeneratorEllipseSpot1 = new go.Spot(0.156, 0.156);
|
|
var GeneratorEllipseSpot2 = new go.Spot(0.844, 0.844);
|
|
var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);
|
|
go.Shape.setFigureParameter("RoundedRectangle", 0, new FigureParameter("CornerRounding", 5));
|
|
go.Shape.defineFigureGenerator("RoundedRectangle", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1) || param1 < 0)
|
|
param1 = 5;
|
|
param1 = Math.min(param1, w / 3);
|
|
param1 = Math.min(param1, h / 3);
|
|
var cpOffset = param1 * KAPPA;
|
|
var geo = new go.Geometry().add(new go.PathFigure(param1, 0, true).add(new go.PathSegment(go.PathSegment.Line, w - param1, 0)).add(new go.PathSegment(go.PathSegment.Bezier, w, param1, w - cpOffset, 0, w, cpOffset)).add(new go.PathSegment(go.PathSegment.Line, w, h - param1)).add(new go.PathSegment(go.PathSegment.Bezier, w - param1, h, w, h - cpOffset, w - cpOffset, h)).add(new go.PathSegment(go.PathSegment.Line, param1, h)).add(new go.PathSegment(go.PathSegment.Bezier, 0, h - param1, cpOffset, h, 0, h - cpOffset)).add(new go.PathSegment(go.PathSegment.Line, 0, param1)).add(new go.PathSegment(go.PathSegment.Bezier, param1, 0, 0, cpOffset, cpOffset, 0).close()));
|
|
if (cpOffset > 1) {
|
|
geo.spot1 = new go.Spot(0, 0, cpOffset, cpOffset);
|
|
geo.spot2 = new go.Spot(1, 1, -cpOffset, -cpOffset);
|
|
}
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Border", "RoundedRectangle");
|
|
go.Shape.defineFigureGenerator("TriangleRight", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0).add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, 0, h).close())).setSpots(0, 0.25, 0.5, 0.75);
|
|
});
|
|
go.Shape.defineFigureGenerator("TriangleDown", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h).close())).setSpots(0.25, 0, 0.75, 0.5);
|
|
});
|
|
go.Shape.defineFigureGenerator("TriangleLeft", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(w, h).add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, w, 0).close())).setSpots(0.5, 0.25, 1, 0.75);
|
|
});
|
|
go.Shape.defineFigureGenerator("TriangleUp", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(w, h).add(new go.PathSegment(go.PathSegment.Line, 0, h)).add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0).close())).setSpots(0.25, 0.5, 0.75, 1);
|
|
});
|
|
go.Shape.defineFigureGenerator("Triangle", "TriangleUp");
|
|
go.Shape.defineFigureGenerator("Diamond", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0.5 * w, 0).add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h)).add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h).close())).setSpots(0.25, 0.25, 0.75, 0.75);
|
|
});
|
|
go.Shape.defineFigureGenerator("LineH", function(shape, w, h) {
|
|
var geo = new go.Geometry(go.Geometry.Line);
|
|
geo.startX = 0;
|
|
geo.startY = h / 2;
|
|
geo.endX = w;
|
|
geo.endY = h / 2;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("LineV", function(shape, w, h) {
|
|
var geo = new go.Geometry(go.Geometry.Line);
|
|
geo.startX = w / 2;
|
|
geo.startY = 0;
|
|
geo.endX = w / 2;
|
|
geo.endY = h;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("BarH", "Rectangle");
|
|
go.Shape.defineFigureGenerator("BarV", "Rectangle");
|
|
go.Shape.defineFigureGenerator("MinusLine", "LineH");
|
|
go.Shape.defineFigureGenerator("PlusLine", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, h / 2, false).add(new go.PathSegment(go.PathSegment.Line, w, h / 2)).add(new go.PathSegment(go.PathSegment.Move, w / 2, 0)).add(new go.PathSegment(go.PathSegment.Line, w / 2, h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("XLine", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, h, false).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Move, 0, 0)).add(new go.PathSegment(go.PathSegment.Line, w, h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("LineRight", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0.25 * w, 0, false).add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.25 * w, h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("LineDown", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0.25 * h, false).add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.75 * h)).add(new go.PathSegment(go.PathSegment.Line, w, 0.25 * h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("LineLeft", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0.75 * w, 0, false).add(new go.PathSegment(go.PathSegment.Line, 0.25 * w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("LineUp", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0.75 * h, false).add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.25 * h)).add(new go.PathSegment(go.PathSegment.Line, w, 0.75 * h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("AsteriskLine", function(shape, w, h) {
|
|
var offset = 0.2 / Math.SQRT2;
|
|
return new go.Geometry().add(new go.PathFigure(offset * w, (1 - offset) * h, false).add(new go.PathSegment(go.PathSegment.Line, (1 - offset) * w, offset * h)).add(new go.PathSegment(go.PathSegment.Move, offset * w, offset * h)).add(new go.PathSegment(go.PathSegment.Line, (1 - offset) * w, (1 - offset) * h)).add(new go.PathSegment(go.PathSegment.Move, 0, h / 2)).add(new go.PathSegment(go.PathSegment.Line, w, h / 2)).add(new go.PathSegment(go.PathSegment.Move, w / 2, 0)).add(new go.PathSegment(go.PathSegment.Line, w / 2, h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("CircleLine", function(shape, w, h) {
|
|
var rad = w / 2;
|
|
var geo = new go.Geometry().add(new go.PathFigure(w, w / 2, false).add(new go.PathSegment(go.PathSegment.Arc, 0, 360, rad, rad, rad, rad).close()));
|
|
geo.spot1 = GeneratorEllipseSpot1;
|
|
geo.spot2 = GeneratorEllipseSpot2;
|
|
geo.defaultStretch = go.GraphObject.Uniform;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Line1", function(shape, w, h) {
|
|
var geo = new go.Geometry(go.Geometry.Line);
|
|
geo.startX = 0;
|
|
geo.startY = 0;
|
|
geo.endX = w;
|
|
geo.endY = h;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Line2", function(shape, w, h) {
|
|
var geo = new go.Geometry(go.Geometry.Line);
|
|
geo.startX = w;
|
|
geo.startY = 0;
|
|
geo.endX = 0;
|
|
geo.endY = h;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Curve1", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, false).add(new go.PathSegment(go.PathSegment.Bezier, w, h, KAPPA * w, 0, w, (1 - KAPPA) * h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("Curve2", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, false).add(new go.PathSegment(go.PathSegment.Bezier, w, h, 0, KAPPA * h, (1 - KAPPA) * w, h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("Curve3", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(w, 0, false).add(new go.PathSegment(go.PathSegment.Bezier, 0, h, w, KAPPA * h, KAPPA * w, h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("Curve4", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(w, 0, false).add(new go.PathSegment(go.PathSegment.Bezier, 0, h, (1 - KAPPA) * w, 0, 0, (1 - KAPPA) * h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("TriangleDownLeft", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, true).add(new go.PathSegment(go.PathSegment.Line, w, h)).add(new go.PathSegment(go.PathSegment.Line, 0, h).close())).setSpots(0, 0.5, 0.5, 1);
|
|
});
|
|
go.Shape.defineFigureGenerator("TriangleDownRight", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(w, 0, true).add(new go.PathSegment(go.PathSegment.Line, w, h)).add(new go.PathSegment(go.PathSegment.Line, 0, h).close())).setSpots(0.5, 0.5, 1, 1);
|
|
});
|
|
go.Shape.defineFigureGenerator("TriangleUpLeft", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, true).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Line, 0, h).close())).setSpots(0, 0, 0.5, 0.5);
|
|
});
|
|
go.Shape.defineFigureGenerator("TriangleUpRight", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, true).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Line, w, h).close())).setSpots(0.5, 0, 1, 0.5);
|
|
});
|
|
go.Shape.defineFigureGenerator("RightTriangle", "TriangleDownLeft");
|
|
go.Shape.setFigureParameter("Parallelogram1", 0, new FigureParameter("Indent", 0.1, -0.99, 0.99));
|
|
go.Shape.defineFigureGenerator("Parallelogram1", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.1;
|
|
else if (param1 < -1)
|
|
param1 = -1;
|
|
else if (param1 > 1)
|
|
param1 = 1;
|
|
var indent = Math.abs(param1) * w;
|
|
if (param1 === 0) {
|
|
var geo = new go.Geometry(go.Geometry.Rectangle);
|
|
geo.startX = 0;
|
|
geo.startY = 0;
|
|
geo.endX = w;
|
|
geo.endY = h;
|
|
return geo;
|
|
} else {
|
|
var geo = new go.Geometry();
|
|
if (param1 > 0) {
|
|
geo.add(new go.PathFigure(indent, 0).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Line, w - indent, h)).add(new go.PathSegment(go.PathSegment.Line, 0, h).close()));
|
|
} else {
|
|
geo.add(new go.PathFigure(0, 0).add(new go.PathSegment(go.PathSegment.Line, w - indent, 0)).add(new go.PathSegment(go.PathSegment.Line, w, h)).add(new go.PathSegment(go.PathSegment.Line, indent, h).close()));
|
|
}
|
|
if (indent < w / 2) {
|
|
geo.setSpots(indent / w, 0, (w - indent) / w, 1);
|
|
}
|
|
return geo;
|
|
}
|
|
});
|
|
go.Shape.defineFigureGenerator("Parallelogram", "Parallelogram1");
|
|
go.Shape.setFigureParameter("Parallelogram2", 0, new FigureParameter("Indent", 10, -Infinity, Infinity));
|
|
go.Shape.defineFigureGenerator("Parallelogram2", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 10;
|
|
else if (param1 < -w)
|
|
param1 = -w;
|
|
else if (param1 > w)
|
|
param1 = w;
|
|
var indent = Math.abs(param1);
|
|
if (param1 === 0) {
|
|
var geo = new go.Geometry(go.Geometry.Rectangle);
|
|
geo.startX = 0;
|
|
geo.startY = 0;
|
|
geo.endX = w;
|
|
geo.endY = h;
|
|
return geo;
|
|
} else {
|
|
var geo = new go.Geometry();
|
|
if (param1 > 0) {
|
|
geo.add(new go.PathFigure(indent, 0).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Line, w - indent, h)).add(new go.PathSegment(go.PathSegment.Line, 0, h).close()));
|
|
} else {
|
|
geo.add(new go.PathFigure(0, 0).add(new go.PathSegment(go.PathSegment.Line, w - indent, 0)).add(new go.PathSegment(go.PathSegment.Line, w, h)).add(new go.PathSegment(go.PathSegment.Line, indent, h).close()));
|
|
}
|
|
if (indent < w / 2) {
|
|
geo.setSpots(indent / w, 0, (w - indent) / w, 1);
|
|
}
|
|
return geo;
|
|
}
|
|
});
|
|
go.Shape.setFigureParameter("Trapezoid1", 0, new FigureParameter("Indent", 0.2, -0.99, 0.99));
|
|
go.Shape.defineFigureGenerator("Trapezoid1", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.2;
|
|
else if (param1 < 0.5)
|
|
param1 = -0.5;
|
|
else if (param1 > 0.5)
|
|
param1 = 0.5;
|
|
var indent = Math.abs(param1) * w;
|
|
if (param1 === 0) {
|
|
var geo = new go.Geometry(go.Geometry.Rectangle);
|
|
geo.startX = 0;
|
|
geo.startY = 0;
|
|
geo.endX = w;
|
|
geo.endY = h;
|
|
return geo;
|
|
} else {
|
|
var geo = new go.Geometry();
|
|
if (param1 > 0) {
|
|
geo.add(new go.PathFigure(indent, 0).add(new go.PathSegment(go.PathSegment.Line, w - indent, 0)).add(new go.PathSegment(go.PathSegment.Line, w, h)).add(new go.PathSegment(go.PathSegment.Line, 0, h).close()));
|
|
} else {
|
|
geo.add(new go.PathFigure(0, 0).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Line, w - indent, h)).add(new go.PathSegment(go.PathSegment.Line, indent, h).close()));
|
|
}
|
|
if (indent < w / 2) {
|
|
geo.setSpots(indent / w, 0, (w - indent) / w, 1);
|
|
}
|
|
return geo;
|
|
}
|
|
});
|
|
go.Shape.defineFigureGenerator("Trapezoid", "Trapezoid1");
|
|
go.Shape.setFigureParameter("Trapezoid2", 0, new FigureParameter("Indent", 20, -Infinity, Infinity));
|
|
go.Shape.defineFigureGenerator("Trapezoid2", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 20;
|
|
else if (param1 < -w)
|
|
param1 = -w / 2;
|
|
else if (param1 > w)
|
|
param1 = w / 2;
|
|
var indent = Math.abs(param1);
|
|
if (param1 === 0) {
|
|
var geo = new go.Geometry(go.Geometry.Rectangle);
|
|
geo.startX = 0;
|
|
geo.startY = 0;
|
|
geo.endX = w;
|
|
geo.endY = h;
|
|
return geo;
|
|
} else {
|
|
var geo = new go.Geometry();
|
|
if (param1 > 0) {
|
|
geo.add(new go.PathFigure(indent, 0).add(new go.PathSegment(go.PathSegment.Line, w - indent, 0)).add(new go.PathSegment(go.PathSegment.Line, w, h)).add(new go.PathSegment(go.PathSegment.Line, 0, h).close()));
|
|
} else {
|
|
geo.add(new go.PathFigure(0, 0).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Line, w - indent, h)).add(new go.PathSegment(go.PathSegment.Line, indent, h).close()));
|
|
}
|
|
if (indent < w / 2) {
|
|
geo.setSpots(indent / w, 0, (w - indent) / w, 1);
|
|
}
|
|
return geo;
|
|
}
|
|
});
|
|
go.Shape.setFigureParameter("ManualOperation", 0, new FigureParameter("Indent", 10, -Infinity, Infinity));
|
|
go.Shape.defineFigureGenerator("ManualOperation", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 10;
|
|
else if (param1 < -w)
|
|
param1 = -w / 2;
|
|
else if (param1 > w)
|
|
param1 = w / 2;
|
|
var indent = Math.abs(param1);
|
|
if (param1 === 0) {
|
|
var geo = new go.Geometry(go.Geometry.Rectangle);
|
|
geo.startX = 0;
|
|
geo.startY = 0;
|
|
geo.endX = w;
|
|
geo.endY = h;
|
|
return geo;
|
|
} else {
|
|
var geo = new go.Geometry();
|
|
if (param1 > 0) {
|
|
geo.add(new go.PathFigure(0, 0).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Line, w - indent, h)).add(new go.PathSegment(go.PathSegment.Line, indent, h).close()));
|
|
} else {
|
|
geo.add(new go.PathFigure(indent, 0).add(new go.PathSegment(go.PathSegment.Line, w - indent, 0)).add(new go.PathSegment(go.PathSegment.Line, w, h)).add(new go.PathSegment(go.PathSegment.Line, 0, h).close()));
|
|
}
|
|
if (indent < w / 2) {
|
|
geo.setSpots(indent / w, 0, (w - indent) / w, 1);
|
|
}
|
|
return geo;
|
|
}
|
|
});
|
|
var _CachedArrays = [];
|
|
function tempArray() {
|
|
var temp = _CachedArrays.pop();
|
|
if (temp === void 0)
|
|
return [];
|
|
return temp;
|
|
}
|
|
;
|
|
function freeArray(a) {
|
|
a.length = 0;
|
|
_CachedArrays.push(a);
|
|
}
|
|
;
|
|
function createPolygon(sides) {
|
|
var points = tempArray();
|
|
var radius = 0.5;
|
|
var center = 0.5;
|
|
var offsetAngle = Math.PI * 1.5;
|
|
var angle = 0;
|
|
for (var i = 0; i < sides; i++) {
|
|
angle = 2 * Math.PI / sides * i + offsetAngle;
|
|
points[i] = new go.Point(center + radius * Math.cos(angle), center + radius * Math.sin(angle));
|
|
}
|
|
points.push(points[0]);
|
|
return points;
|
|
}
|
|
;
|
|
function createBurst(points) {
|
|
var star = createStar(points);
|
|
var pts = tempArray();
|
|
pts[0] = star[0];
|
|
for (var i = 1, count = 1; i < star.length; i += 2, count += 3) {
|
|
pts[count] = star[i];
|
|
pts[count + 1] = star[i];
|
|
pts[count + 2] = star[i + 1];
|
|
}
|
|
freeArray(star);
|
|
return pts;
|
|
}
|
|
;
|
|
function createStar(points) {
|
|
var polygon = createPolygon(points);
|
|
var pts = tempArray();
|
|
var half = Math.floor(polygon.length / 2);
|
|
var count = polygon.length - 1;
|
|
var offset = points % 2 === 0 ? 2 : 1;
|
|
for (var i = 0; i < count; i++) {
|
|
var p0 = polygon[i];
|
|
var p1 = polygon[i + 1];
|
|
var q21 = polygon[(half + i - 1) % count];
|
|
var q2off = polygon[(half + i + offset) % count];
|
|
pts[i * 2] = p0;
|
|
pts[i * 2 + 1] = getIntersection(
|
|
p0.x,
|
|
p0.y,
|
|
q21.x,
|
|
q21.y,
|
|
p1.x,
|
|
p1.y,
|
|
q2off.x,
|
|
q2off.y,
|
|
new go.Point()
|
|
);
|
|
}
|
|
pts[pts.length] = pts[0];
|
|
freeArray(polygon);
|
|
return pts;
|
|
}
|
|
;
|
|
go.Shape.defineFigureGenerator("Pentagon", function(shape, w, h) {
|
|
var points = createPolygon(5);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(points[0].x * w, points[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < 5; i++) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[i].x * w, points[i].y * h));
|
|
}
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[0].x * w, points[0].y * h).close());
|
|
freeArray(points);
|
|
geo.spot1 = new go.Spot(0.2, 0.22);
|
|
geo.spot2 = new go.Spot(0.8, 0.9);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Hexagon", function(shape, w, h) {
|
|
var points = createPolygon(6);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(points[0].x * w, points[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < 6; i++) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[i].x * w, points[i].y * h));
|
|
}
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[0].x * w, points[0].y * h).close());
|
|
freeArray(points);
|
|
geo.spot1 = new go.Spot(0.07, 0.25);
|
|
geo.spot2 = new go.Spot(0.93, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Heptagon", function(shape, w, h) {
|
|
var points = createPolygon(7);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(points[0].x * w, points[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < 7; i++) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[i].x * w, points[i].y * h));
|
|
}
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[0].x * w, points[0].y * h).close());
|
|
freeArray(points);
|
|
geo.spot1 = new go.Spot(0.2, 0.15);
|
|
geo.spot2 = new go.Spot(0.8, 0.85);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Octagon", function(shape, w, h) {
|
|
var points = createPolygon(8);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(points[0].x * w, points[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < 8; i++) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[i].x * w, points[i].y * h));
|
|
}
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[0].x * w, points[0].y * h).close());
|
|
freeArray(points);
|
|
geo.spot1 = new go.Spot(0.15, 0.15);
|
|
geo.spot2 = new go.Spot(0.85, 0.85);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Nonagon", function(shape, w, h) {
|
|
var points = createPolygon(9);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(points[0].x * w, points[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < 9; i++) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[i].x * w, points[i].y * h));
|
|
}
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[0].x * w, points[0].y * h).close());
|
|
freeArray(points);
|
|
geo.spot1 = new go.Spot(0.17, 0.13);
|
|
geo.spot2 = new go.Spot(0.82, 0.82);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Decagon", function(shape, w, h) {
|
|
var points = createPolygon(10);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(points[0].x * w, points[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < 10; i++) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[i].x * w, points[i].y * h));
|
|
}
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[0].x * w, points[0].y * h).close());
|
|
freeArray(points);
|
|
geo.spot1 = new go.Spot(0.16, 0.16);
|
|
geo.spot2 = new go.Spot(0.84, 0.84);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Dodecagon", function(shape, w, h) {
|
|
var points = createPolygon(12);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(points[0].x * w, points[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < 12; i++) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[i].x * w, points[i].y * h));
|
|
}
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, points[0].x * w, points[0].y * h).close());
|
|
freeArray(points);
|
|
geo.spot1 = new go.Spot(0.16, 0.16);
|
|
geo.spot2 = new go.Spot(0.84, 0.84);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("FivePointedStar", function(shape, w, h) {
|
|
var starPoints = createStar(5);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(starPoints[0].x * w, starPoints[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < 10; i++) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, starPoints[i].x * w, starPoints[i].y * h));
|
|
}
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, starPoints[0].x * w, starPoints[0].y * h).close());
|
|
freeArray(starPoints);
|
|
geo.spot1 = new go.Spot(0.266, 0.333);
|
|
geo.spot2 = new go.Spot(0.733, 0.733);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("SixPointedStar", function(shape, w, h) {
|
|
var starPoints = createStar(6);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(starPoints[0].x * w, starPoints[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < 12; i++) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, starPoints[i].x * w, starPoints[i].y * h));
|
|
}
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, starPoints[0].x * w, starPoints[0].y * h).close());
|
|
freeArray(starPoints);
|
|
geo.spot1 = new go.Spot(0.17, 0.25);
|
|
geo.spot2 = new go.Spot(0.83, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("SevenPointedStar", function(shape, w, h) {
|
|
var starPoints = createStar(7);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(starPoints[0].x * w, starPoints[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < 14; i++) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, starPoints[i].x * w, starPoints[i].y * h));
|
|
}
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, starPoints[0].x * w, starPoints[0].y * h).close());
|
|
freeArray(starPoints);
|
|
geo.spot1 = new go.Spot(0.222, 0.277);
|
|
geo.spot2 = new go.Spot(0.777, 0.666);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("EightPointedStar", function(shape, w, h) {
|
|
var starPoints = createStar(8);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(starPoints[0].x * w, starPoints[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < 16; i++) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, starPoints[i].x * w, starPoints[i].y * h));
|
|
}
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, starPoints[0].x * w, starPoints[0].y * h).close());
|
|
freeArray(starPoints);
|
|
geo.spot1 = new go.Spot(0.25, 0.25);
|
|
geo.spot2 = new go.Spot(0.75, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("NinePointedStar", function(shape, w, h) {
|
|
var starPoints = createStar(9);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(starPoints[0].x * w, starPoints[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < 18; i++) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, starPoints[i].x * w, starPoints[i].y * h));
|
|
}
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, starPoints[0].x * w, starPoints[0].y * h).close());
|
|
freeArray(starPoints);
|
|
geo.spot1 = new go.Spot(0.222, 0.277);
|
|
geo.spot2 = new go.Spot(0.777, 0.666);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("TenPointedStar", function(shape, w, h) {
|
|
var starPoints = createStar(10);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(starPoints[0].x * w, starPoints[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < 20; i++) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, starPoints[i].x * w, starPoints[i].y * h));
|
|
}
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, starPoints[0].x * w, starPoints[0].y * h).close());
|
|
freeArray(starPoints);
|
|
geo.spot1 = new go.Spot(0.281, 0.261);
|
|
geo.spot2 = new go.Spot(0.723, 0.748);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("FivePointedBurst", function(shape, w, h) {
|
|
var burstPoints = createBurst(5);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(burstPoints[0].x * w, burstPoints[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < burstPoints.length; i += 3) {
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
burstPoints[i + 2].x * w,
|
|
burstPoints[i + 2].y * h,
|
|
burstPoints[i].x * w,
|
|
burstPoints[i].y * h,
|
|
burstPoints[i + 1].x * w,
|
|
burstPoints[i + 1].y * h
|
|
));
|
|
}
|
|
fig.segments.last().close();
|
|
freeArray(burstPoints);
|
|
geo.spot1 = new go.Spot(0.222, 0.277);
|
|
geo.spot2 = new go.Spot(0.777, 0.777);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("SixPointedBurst", function(shape, w, h) {
|
|
var burstPoints = createBurst(6);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(burstPoints[0].x * w, burstPoints[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < burstPoints.length; i += 3) {
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
burstPoints[i + 2].x * w,
|
|
burstPoints[i + 2].y * h,
|
|
burstPoints[i].x * w,
|
|
burstPoints[i].y * h,
|
|
burstPoints[i + 1].x * w,
|
|
burstPoints[i + 1].y * h
|
|
));
|
|
}
|
|
fig.segments.last().close();
|
|
freeArray(burstPoints);
|
|
geo.spot1 = new go.Spot(0.17, 0.222);
|
|
geo.spot2 = new go.Spot(0.833, 0.777);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("SevenPointedBurst", function(shape, w, h) {
|
|
var burstPoints = createBurst(7);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(burstPoints[0].x * w, burstPoints[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < burstPoints.length; i += 3) {
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
burstPoints[i + 2].x * w,
|
|
burstPoints[i + 2].y * h,
|
|
burstPoints[i].x * w,
|
|
burstPoints[i].y * h,
|
|
burstPoints[i + 1].x * w,
|
|
burstPoints[i + 1].y * h
|
|
));
|
|
}
|
|
fig.segments.last().close();
|
|
freeArray(burstPoints);
|
|
geo.spot1 = new go.Spot(0.222, 0.222);
|
|
geo.spot2 = new go.Spot(0.777, 0.777);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("EightPointedBurst", function(shape, w, h) {
|
|
var burstPoints = createBurst(8);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(burstPoints[0].x * w, burstPoints[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < burstPoints.length; i += 3) {
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
burstPoints[i + 2].x * w,
|
|
burstPoints[i + 2].y * h,
|
|
burstPoints[i].x * w,
|
|
burstPoints[i].y * h,
|
|
burstPoints[i + 1].x * w,
|
|
burstPoints[i + 1].y * h
|
|
));
|
|
}
|
|
fig.segments.last().close();
|
|
freeArray(burstPoints);
|
|
geo.spot1 = new go.Spot(0.222, 0.222);
|
|
geo.spot2 = new go.Spot(0.777, 0.777);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("NinePointedBurst", function(shape, w, h) {
|
|
var burstPoints = createBurst(9);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(burstPoints[0].x * w, burstPoints[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < burstPoints.length; i += 3) {
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
burstPoints[i + 2].x * w,
|
|
burstPoints[i + 2].y * h,
|
|
burstPoints[i].x * w,
|
|
burstPoints[i].y * h,
|
|
burstPoints[i + 1].x * w,
|
|
burstPoints[i + 1].y * h
|
|
));
|
|
}
|
|
fig.segments.last().close();
|
|
freeArray(burstPoints);
|
|
geo.spot1 = new go.Spot(0.222, 0.222);
|
|
geo.spot2 = new go.Spot(0.777, 0.777);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("TenPointedBurst", function(shape, w, h) {
|
|
var burstPoints = createBurst(10);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(burstPoints[0].x * w, burstPoints[0].y * h, true);
|
|
geo.add(fig);
|
|
for (var i = 1; i < burstPoints.length; i += 3) {
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
burstPoints[i + 2].x * w,
|
|
burstPoints[i + 2].y * h,
|
|
burstPoints[i].x * w,
|
|
burstPoints[i].y * h,
|
|
burstPoints[i + 1].x * w,
|
|
burstPoints[i + 1].y * h
|
|
));
|
|
}
|
|
fig.segments.last().close();
|
|
freeArray(burstPoints);
|
|
geo.spot1 = new go.Spot(0.222, 0.222);
|
|
geo.spot2 = new go.Spot(0.777, 0.777);
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("FramedRectangle", 0, new FigureParameter("ThicknessX", 8));
|
|
go.Shape.setFigureParameter("FramedRectangle", 1, new FigureParameter("ThicknessY", 8));
|
|
go.Shape.defineFigureGenerator("FramedRectangle", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
var param2 = shape ? shape.parameter2 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 8;
|
|
if (isNaN(param2))
|
|
param2 = 8;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
if (param1 < w / 2 && param2 < h / 2) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, param1, param2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, param1, h - param2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w - param1, h - param2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w - param1, param2).close());
|
|
}
|
|
geo.setSpots(0, 0, 1, 1, param1, param2, -param1, -param2);
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("Ring", 0, new FigureParameter("Thickness", 8));
|
|
go.Shape.defineFigureGenerator("Ring", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1) || param1 < 0)
|
|
param1 = 8;
|
|
var rad = w / 2;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, w / 2, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 0, 360, rad, rad, rad, rad).close());
|
|
var rad2 = Math.max(rad - param1, 0);
|
|
if (rad2 > 0) {
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, w / 2 + rad2, w / 2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 0, -360, rad, rad, rad2, rad2).close());
|
|
}
|
|
geo.spot1 = GeneratorEllipseSpot1;
|
|
geo.spot2 = GeneratorEllipseSpot2;
|
|
geo.defaultStretch = go.GraphObject.Uniform;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Cloud", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0.08034461 * w, 0.1944299 * h, true).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.2008615 * w,
|
|
0.05349299 * h,
|
|
-0.09239631 * w,
|
|
0.07836421 * h,
|
|
0.1406031 * w,
|
|
-0.0542823 * h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.4338609 * w,
|
|
0.074219 * h,
|
|
0.2450511 * w,
|
|
-697547e-8 * h,
|
|
0.3776197 * w,
|
|
-0.01112067 * h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.6558228 * w,
|
|
0.07004196 * h,
|
|
0.4539471 * w,
|
|
0,
|
|
0.6066018 * w,
|
|
-0.02526587 * h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.8921095 * w,
|
|
0.08370865 * h,
|
|
0.6914277 * w,
|
|
-0.01904177 * h,
|
|
0.8921095 * w,
|
|
-0.01220843 * h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.9147671 * w,
|
|
0.3194596 * h,
|
|
1.036446 * w,
|
|
0.04105738 * h,
|
|
1.020377 * w,
|
|
0.3022052 * h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.9082935 * w,
|
|
0.562044 * h,
|
|
1.04448 * w,
|
|
0.360238 * h,
|
|
0.992256 * w,
|
|
0.5219009 * h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.9212406 * w,
|
|
0.8217117 * h,
|
|
1.032337 * w,
|
|
0.5771781 * h,
|
|
1.018411 * w,
|
|
0.8120651 * h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.7592566 * w,
|
|
0.9156953 * h,
|
|
1.028411 * w,
|
|
0.9571472 * h,
|
|
0.8556702 * w,
|
|
1.052487 * h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5101666 * w,
|
|
0.9310455 * h,
|
|
0.7431877 * w,
|
|
1.009325 * h,
|
|
0.5624123 * w,
|
|
1.021761 * h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.2609328 * w,
|
|
0.9344623 * h,
|
|
0.4820677 * w,
|
|
1.031761 * h,
|
|
0.3030112 * w,
|
|
1.002796 * h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.08034461 * w,
|
|
0.870098 * h,
|
|
0.2329994 * w,
|
|
1.01518 * h,
|
|
0.03213784 * w,
|
|
1.01518 * h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.06829292 * w,
|
|
0.6545475 * h,
|
|
-0.02812061 * w,
|
|
0.9032597 * h,
|
|
-0.01205169 * w,
|
|
0.6835638 * h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.06427569 * w,
|
|
0.4265613 * h,
|
|
-0.01812061 * w,
|
|
0.6089503 * h,
|
|
-606892e-8 * w,
|
|
0.4555777 * h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.08034461 * w,
|
|
0.1944299 * h,
|
|
-0.01606892 * w,
|
|
0.3892545 * h,
|
|
-0.01205169 * w,
|
|
0.1944299 * h
|
|
))).setSpots(0.1, 0.1, 0.9, 0.9);
|
|
});
|
|
go.Shape.defineFigureGenerator("StopSign", function(shape, w, h) {
|
|
var part = 1 / (Math.SQRT2 + 2);
|
|
return new go.Geometry().add(new go.PathFigure(part * w, 0, true).add(new go.PathSegment(go.PathSegment.Line, (1 - part) * w, 0)).add(new go.PathSegment(go.PathSegment.Line, w, part * h)).add(new go.PathSegment(go.PathSegment.Line, w, (1 - part) * h)).add(new go.PathSegment(go.PathSegment.Line, (1 - part) * w, h)).add(new go.PathSegment(go.PathSegment.Line, part * w, h)).add(new go.PathSegment(go.PathSegment.Line, 0, (1 - part) * h)).add(new go.PathSegment(go.PathSegment.Line, 0, part * h).close())).setSpots(part / 2, part / 2, 1 - part / 2, 1 - part / 2);
|
|
});
|
|
go.Shape.setFigureParameter("Pie", 0, new FigureParameter("Start", 0, -360, 360));
|
|
go.Shape.setFigureParameter("Pie", 1, new FigureParameter("Sweep", 315, -360, 360));
|
|
go.Shape.defineFigureGenerator("Pie", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
var param2 = shape ? shape.parameter2 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0;
|
|
if (isNaN(param2))
|
|
param2 = 315;
|
|
var start = param1 % 360;
|
|
if (start < 0)
|
|
start += 360;
|
|
var sweep = param2 % 360;
|
|
var rad = Math.min(w, h) / 2;
|
|
return new go.Geometry().add(new go.PathFigure(rad, rad).add(new go.PathSegment(
|
|
go.PathSegment.Arc,
|
|
start,
|
|
sweep,
|
|
// angles
|
|
rad,
|
|
rad,
|
|
// center
|
|
rad,
|
|
rad
|
|
).close()));
|
|
});
|
|
go.Shape.defineFigureGenerator("PiePiece", function(shape, w, h) {
|
|
var factor = KAPPA / Math.SQRT2 * 0.5;
|
|
var x1 = Math.SQRT2 / 2;
|
|
var y1 = 1 - Math.SQRT2 / 2;
|
|
return new go.Geometry().add(new go.PathFigure(w, h, true).add(new go.PathSegment(go.PathSegment.Bezier, x1 * w, y1 * h, w, (1 - factor) * h, (x1 + factor) * w, (y1 + factor) * h)).add(new go.PathSegment(go.PathSegment.Line, 0, h).close()));
|
|
});
|
|
go.Shape.setFigureParameter("ThickCross", 0, new FigureParameter("Thickness", 30));
|
|
go.Shape.defineFigureGenerator("ThickCross", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1) || param1 < 0)
|
|
param1 = 30;
|
|
var t = Math.min(param1, w) / 2;
|
|
var mx = w / 2;
|
|
var my = h / 2;
|
|
return new go.Geometry().add(new go.PathFigure(mx - t, 0, true).add(new go.PathSegment(go.PathSegment.Line, mx + t, 0)).add(new go.PathSegment(go.PathSegment.Line, mx + t, my - t)).add(new go.PathSegment(go.PathSegment.Line, w, my - t)).add(new go.PathSegment(go.PathSegment.Line, w, my + t)).add(new go.PathSegment(go.PathSegment.Line, mx + t, my + t)).add(new go.PathSegment(go.PathSegment.Line, mx + t, h)).add(new go.PathSegment(go.PathSegment.Line, mx - t, h)).add(new go.PathSegment(go.PathSegment.Line, mx - t, my + t)).add(new go.PathSegment(go.PathSegment.Line, 0, my + t)).add(new go.PathSegment(go.PathSegment.Line, 0, my - t)).add(new go.PathSegment(go.PathSegment.Line, mx - t, my - t).close()));
|
|
});
|
|
go.Shape.setFigureParameter("ThinCross", 0, new FigureParameter("Thickness", 10));
|
|
go.Shape.defineFigureGenerator("ThinCross", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1) || param1 < 0)
|
|
param1 = 10;
|
|
var t = Math.min(param1, w) / 2;
|
|
var mx = w / 2;
|
|
var my = h / 2;
|
|
return new go.Geometry().add(new go.PathFigure(mx - t, 0, true).add(new go.PathSegment(go.PathSegment.Line, mx + t, 0)).add(new go.PathSegment(go.PathSegment.Line, mx + t, my - t)).add(new go.PathSegment(go.PathSegment.Line, w, my - t)).add(new go.PathSegment(go.PathSegment.Line, w, my + t)).add(new go.PathSegment(go.PathSegment.Line, mx + t, my + t)).add(new go.PathSegment(go.PathSegment.Line, mx + t, h)).add(new go.PathSegment(go.PathSegment.Line, mx - t, h)).add(new go.PathSegment(go.PathSegment.Line, mx - t, my + t)).add(new go.PathSegment(go.PathSegment.Line, 0, my + t)).add(new go.PathSegment(go.PathSegment.Line, 0, my - t)).add(new go.PathSegment(go.PathSegment.Line, mx - t, my - t).close()));
|
|
});
|
|
go.Shape.setFigureParameter("ThickX", 0, new FigureParameter("Thickness", 30));
|
|
go.Shape.defineFigureGenerator("ThickX", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1) || param1 < 0)
|
|
param1 = 30;
|
|
if (w === 0 || h === 0) {
|
|
var geo = new go.Geometry(go.Geometry.Rectangle);
|
|
geo.startX = 0;
|
|
geo.startY = 0;
|
|
geo.endX = w;
|
|
geo.endY = h;
|
|
return geo;
|
|
} else {
|
|
var w2 = w / 2;
|
|
var h2 = h / 2;
|
|
var a2 = Math.atan2(h, w);
|
|
var dx = param1 - Math.min(Math.cos(a2) * param1 / 2, w2);
|
|
var dy = param1 - Math.min(Math.sin(a2) * param1 / 2, h2);
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(dx, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w2, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w - dx, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, dy));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, h2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h - dy));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w - dx, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w2, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, dx, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h - dy));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, h2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, dy).close());
|
|
return geo;
|
|
}
|
|
});
|
|
go.Shape.setFigureParameter("ThinX", 0, new FigureParameter("Thickness", 10));
|
|
go.Shape.defineFigureGenerator("ThinX", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1) || param1 < 0)
|
|
param1 = 10;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.1 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.4 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.1 * h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("SquareIBeam", 0, new FigureParameter("BeamWidth", 0.2, 0.1, 0.9));
|
|
go.Shape.defineFigureGenerator("SquareIBeam", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.2;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, param1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, (0.5 + param1 / 2) * w, param1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, (0.5 + param1 / 2) * w, (1 - param1) * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, (1 - param1) * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, (1 - param1) * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, (0.5 - param1 / 2) * w, (1 - param1) * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, (0.5 - param1 / 2) * w, param1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, param1 * h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("RoundedIBeam", 0, new FigureParameter("Curviness", 0.5, 0.05, 0.65));
|
|
go.Shape.defineFigureGenerator("RoundedIBeam", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.5;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, w, h, Math.abs(1 - param1) * w, 0.25 * h, Math.abs(1 - param1) * w, 0.75 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0,
|
|
param1 * w,
|
|
0.75 * h,
|
|
param1 * w,
|
|
0.25 * h
|
|
).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("HalfEllipse", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, true).add(new go.PathSegment(go.PathSegment.Bezier, w, 0.5 * h, KAPPA * w, 0, w, (0.5 - KAPPA / 2) * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0, h, w, (0.5 + KAPPA / 2) * h, KAPPA * w, h).close())).setSpots(0, 0.156, 0.844, 0.844);
|
|
});
|
|
go.Shape.defineFigureGenerator("Crescent", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, true).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
h,
|
|
w,
|
|
0,
|
|
w,
|
|
h
|
|
)).add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0,
|
|
0.5 * w,
|
|
0.75 * h,
|
|
0.5 * w,
|
|
0.25 * h
|
|
).close())).setSpots(0.311, 0.266, 0.744, 0.744);
|
|
});
|
|
go.Shape.defineFigureGenerator("Heart", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0.5 * w, h, true).add(new go.PathSegment(go.PathSegment.Bezier, 0, 0.3 * h, 0.1 * w, 0.8 * h, 0, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, 0.3 * h, 0, 0, 0.45 * w, 0)).add(new go.PathSegment(go.PathSegment.Bezier, w, 0.3 * h, 0.55 * w, 0, w, 0)).add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, h, w, 0.5 * h, 0.9 * w, 0.8 * h).close())).setSpots(0.14, 0.29, 0.86, 0.78);
|
|
});
|
|
go.Shape.defineFigureGenerator("Spade", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0.5 * w, 0, true).add(new go.PathSegment(go.PathSegment.Line, 0.51 * w, 0.01 * h)).add(new go.PathSegment(go.PathSegment.Bezier, w, 0.5 * h, 0.6 * w, 0.2 * h, w, 0.25 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.55 * w, 0.7 * h, w, 0.8 * h, 0.6 * w, 0.8 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.75 * w, h, 0.5 * w, 0.75 * h, 0.55 * w, 0.95 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.25 * w, h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.45 * w, 0.7 * h, 0.45 * w, 0.95 * h, 0.5 * w, 0.75 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0, 0.5 * h, 0.4 * w, 0.8 * h, 0, 0.8 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.49 * w, 0.01 * h, 0, 0.25 * h, 0.4 * w, 0.2 * h).close())).setSpots(0.14, 0.26, 0.86, 0.78);
|
|
});
|
|
go.Shape.defineFigureGenerator("Club", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.4 * w, 0.6 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.15 * w, h, 0.5 * w, 0.75 * h, 0.45 * w, 0.95 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.85 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.6 * w, 0.6 * h, 0.55 * w, 0.95 * h, 0.5 * w, 0.75 * h));
|
|
var r = 0.2;
|
|
var cx = 0.3;
|
|
var cy = 0;
|
|
var d = r * KAPPA;
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 + cx) * w,
|
|
(0.5 + r + cy) * h,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 + d + cy) * h,
|
|
(0.5 - d + cx) * w,
|
|
(0.5 + r + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(1 - 0.5 + r + cx) * w,
|
|
(0.5 + cy) * h,
|
|
(0.5 + d + cx) * w,
|
|
(0.5 + r + cy) * h,
|
|
(0.5 + r + cx) * w,
|
|
(0.5 + d + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 + cx) * w,
|
|
(0.5 - r + cy) * h,
|
|
(1 - 0.5 + r + cx) * w,
|
|
(0.5 - d + cy) * h,
|
|
(0.5 + d + cx) * w,
|
|
(0.5 - r + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.65 * w,
|
|
0.36771243 * h,
|
|
(0.5 - d + cx) * w,
|
|
(0.5 - r + cy) * h,
|
|
(0.5 - r + cx + 0.05) * w,
|
|
(0.5 - d + cy - 0.02) * h
|
|
));
|
|
r = 0.2;
|
|
cx = 0;
|
|
cy = -0.3;
|
|
d = r * KAPPA;
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(1 - 0.5 + r + cx) * w,
|
|
(0.5 + cy) * h,
|
|
(0.5 + d + cx) * w,
|
|
(0.5 + r + cy) * h,
|
|
(0.5 + r + cx) * w,
|
|
(0.5 + d + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 + cx) * w,
|
|
(0.5 - r + cy) * h,
|
|
(1 - 0.5 + r + cx) * w,
|
|
(0.5 - d + cy) * h,
|
|
(0.5 + d + cx) * w,
|
|
(0.5 - r + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 + cy) * h,
|
|
(0.5 - d + cx) * w,
|
|
(0.5 - r + cy) * h,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 - d + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 - d + cx) * w,
|
|
(0.5 + r + cy) * h,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 + d + cy) * h,
|
|
(0.5 - d + cx) * w,
|
|
(0.5 + r + cy) * h
|
|
));
|
|
r = 0.2;
|
|
cx = -0.3;
|
|
cy = 0;
|
|
d = r * KAPPA;
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 + cx) * w,
|
|
(0.5 - r + cy) * h,
|
|
(1 - 0.5 + r + cx - 0.05) * w,
|
|
(0.5 - d + cy - 0.02) * h,
|
|
(0.5 + d + cx) * w,
|
|
(0.5 - r + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 + cy) * h,
|
|
(0.5 - d + cx) * w,
|
|
(0.5 - r + cy) * h,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 - d + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 + cx) * w,
|
|
(0.5 + r + cy) * h,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 + d + cy) * h,
|
|
(0.5 - d + cx) * w,
|
|
(0.5 + r + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.4 * w,
|
|
0.6 * h,
|
|
(0.5 + d + cx) * w,
|
|
(0.5 + r + cy) * h,
|
|
(0.5 + r + cx) * w,
|
|
(0.5 + d + cy) * h
|
|
).close());
|
|
geo.setSpots(0.06, 0.33, 0.93, 0.68);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("YinYang", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w * 0.5, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 270, 180, w * 0.5, w * 0.5, w * 0.5, w * 0.5));
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 90, -180, w * 0.5, w * 0.75, w * 0.25, w * 0.25));
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 90, 180, w * 0.5, w * 0.25, w * 0.25, w * 0.25));
|
|
var radius = 0.1;
|
|
var centerx = 0.5;
|
|
var centery = 0.25;
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, (centerx + radius) * w, centery * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 0, -360, w * centerx, h * centery, radius * w, radius * w).close());
|
|
fig = new go.PathFigure(w * 0.5, 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 270, -180, w * 0.5, w * 0.5, w * 0.5, w * 0.5));
|
|
centery = 0.75;
|
|
fig = new go.PathFigure((centerx + radius) * w, centery * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 0, 360, w * centerx, h * centery, radius * w, radius * w).close());
|
|
geo.defaultStretch = go.GraphObject.Uniform;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Peace", function(shape, w, h) {
|
|
var a = 1 - 0.1464466094067262;
|
|
var w2 = 0.5 * w;
|
|
var h2 = 0.5 * h;
|
|
return new go.Geometry().add(new go.PathFigure(w2, 0, false).add(new go.PathSegment(go.PathSegment.Arc, 270, 360, w2, h2, w2, h2)).add(new go.PathSegment(go.PathSegment.Line, w2, h)).add(new go.PathSegment(go.PathSegment.Move, w2, h2)).add(new go.PathSegment(go.PathSegment.Line, (1 - a) * w, a * h)).add(new go.PathSegment(go.PathSegment.Move, w2, h2)).add(new go.PathSegment(go.PathSegment.Line, a * w, a * h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("NotAllowed", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpOffset = KAPPA * 0.5;
|
|
var radius = 0.5;
|
|
var centerx = 0.5;
|
|
var centery = 0.5;
|
|
var fig = new go.PathFigure(centerx * w, (centery - radius) * h);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
radius = 0.4;
|
|
cpOffset = KAPPA * 0.4;
|
|
var startOfArrowc1 = tempPoint();
|
|
var startOfArrowc2 = tempPoint();
|
|
var startOfArrow = tempPoint();
|
|
var unused = tempPoint();
|
|
breakUpBezier(
|
|
centerx,
|
|
centery - radius,
|
|
centerx + cpOffset,
|
|
centery - radius,
|
|
centerx + radius,
|
|
centery - cpOffset,
|
|
centerx + radius,
|
|
centery,
|
|
0.42,
|
|
startOfArrowc1,
|
|
startOfArrowc2,
|
|
startOfArrow,
|
|
unused,
|
|
unused
|
|
);
|
|
var endOfArrowc1 = tempPoint();
|
|
var endOfArrowc2 = tempPoint();
|
|
var endOfArrow = tempPoint();
|
|
breakUpBezier(
|
|
centerx,
|
|
centery - radius,
|
|
centerx + cpOffset,
|
|
centery - radius,
|
|
centerx + radius,
|
|
centery - cpOffset,
|
|
centerx + radius,
|
|
centery,
|
|
0.58,
|
|
unused,
|
|
unused,
|
|
endOfArrow,
|
|
endOfArrowc1,
|
|
endOfArrowc2
|
|
);
|
|
var startOfArrow2c1 = tempPoint();
|
|
var startOfArrow2c2 = tempPoint();
|
|
var startOfArrow2 = tempPoint();
|
|
breakUpBezier(
|
|
centerx,
|
|
centery + radius,
|
|
centerx - cpOffset,
|
|
centery + radius,
|
|
centerx - radius,
|
|
centery + cpOffset,
|
|
centerx - radius,
|
|
centery,
|
|
0.42,
|
|
startOfArrow2c1,
|
|
startOfArrow2c2,
|
|
startOfArrow2,
|
|
unused,
|
|
unused
|
|
);
|
|
var endOfArrow2c1 = tempPoint();
|
|
var endOfArrow2c2 = tempPoint();
|
|
var endOfArrow2 = tempPoint();
|
|
breakUpBezier(
|
|
centerx,
|
|
centery + radius,
|
|
centerx - cpOffset,
|
|
centery + radius,
|
|
centerx - radius,
|
|
centery + cpOffset,
|
|
centerx - radius,
|
|
centery,
|
|
0.58,
|
|
unused,
|
|
unused,
|
|
endOfArrow2,
|
|
endOfArrow2c1,
|
|
endOfArrow2c2
|
|
);
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, endOfArrow2.x * w, endOfArrow2.y * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
endOfArrow2c1.x * w,
|
|
endOfArrow2c1.y * h,
|
|
endOfArrow2c2.x * w,
|
|
endOfArrow2c2.y * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
startOfArrow.x * w,
|
|
startOfArrow.y * h,
|
|
startOfArrowc1.x * w,
|
|
startOfArrowc1.y * h,
|
|
startOfArrowc2.x * w,
|
|
startOfArrowc2.y * h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, endOfArrow2.x * w, endOfArrow2.y * h).close());
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, startOfArrow2.x * w, startOfArrow2.y * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, endOfArrow.x * w, endOfArrow.y * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
endOfArrowc1.x * w,
|
|
endOfArrowc1.y * h,
|
|
endOfArrowc2.x * w,
|
|
endOfArrowc2.y * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
startOfArrow2.x * w,
|
|
startOfArrow2.y * h,
|
|
startOfArrow2c1.x * w,
|
|
startOfArrow2c1.y * h,
|
|
startOfArrow2c2.x * w,
|
|
startOfArrow2c2.y * h
|
|
).close());
|
|
freePoint(startOfArrowc1);
|
|
freePoint(startOfArrowc2);
|
|
freePoint(startOfArrow);
|
|
freePoint(unused);
|
|
freePoint(endOfArrowc1);
|
|
freePoint(endOfArrowc2);
|
|
freePoint(endOfArrow);
|
|
freePoint(startOfArrow2c1);
|
|
freePoint(startOfArrow2c2);
|
|
freePoint(startOfArrow2);
|
|
freePoint(endOfArrow2c1);
|
|
freePoint(endOfArrow2c2);
|
|
freePoint(endOfArrow2);
|
|
geo.defaultStretch = go.GraphObject.Uniform;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Fragile", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, true).add(new go.PathSegment(go.PathSegment.Line, 0.25 * w, 0)).add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.15 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, 0.25 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.29 * w, 0.33 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.35 * w, 0.25 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, 0.15 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0)).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Bezier, 0.55 * w, 0.5 * h, w, 0.25 * h, 0.75 * w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.55 * w, 0.9 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0.9 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, h)).add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, h)).add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, 0.9 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.45 * w, 0.9 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.45 * w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0, 0, 0.25 * w, 0.5 * h, 0, 0.25 * h).close()));
|
|
});
|
|
go.Shape.setFigureParameter("HourGlass", 0, new FigureParameter("Thickness", 30));
|
|
go.Shape.defineFigureGenerator("HourGlass", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1) || param1 < 0)
|
|
param1 = 30;
|
|
if (param1 > w)
|
|
param1 = w;
|
|
var x1 = (w - param1) / 2;
|
|
var x2 = x1 + param1;
|
|
return new go.Geometry().add(new go.PathFigure(x2, 0.5 * h).add(new go.PathSegment(go.PathSegment.Line, w, h)).add(new go.PathSegment(go.PathSegment.Line, 0, h)).add(new go.PathSegment(go.PathSegment.Line, x1, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, 0, 0)).add(new go.PathSegment(go.PathSegment.Line, w, 0).close()));
|
|
});
|
|
go.Shape.defineFigureGenerator("Lightning", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0.55 * h).add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0)).add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, 0.45 * h)).add(new go.PathSegment(go.PathSegment.Line, w, 0.45 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, h)).add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0.55 * h).close()));
|
|
});
|
|
go.Shape.defineFigureGenerator("GenderMale", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpOffset = KAPPA * 0.4;
|
|
var radius = 0.4;
|
|
var centerx = 0.5;
|
|
var centery = 0.5;
|
|
var unused = tempPoint();
|
|
var mid = tempPoint();
|
|
var c1 = tempPoint();
|
|
var c2 = tempPoint();
|
|
var fig = new go.PathFigure((centerx - radius) * w, centery * h, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
breakUpBezier(
|
|
centerx,
|
|
centery - radius,
|
|
centerx + cpOffset,
|
|
centery - radius,
|
|
centerx + radius,
|
|
centery - cpOffset,
|
|
centerx + radius,
|
|
centery,
|
|
0.44,
|
|
c1,
|
|
c2,
|
|
mid,
|
|
unused,
|
|
unused
|
|
);
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, mid.x * w, mid.y * h, c1.x * w, c1.y * h, c2.x * w, c2.y * h));
|
|
var startOfArrow = tempPointAt(mid.x, mid.y);
|
|
breakUpBezier(
|
|
centerx,
|
|
centery - radius,
|
|
centerx + cpOffset,
|
|
centery - radius,
|
|
centerx + radius,
|
|
centery - cpOffset,
|
|
centerx + radius,
|
|
centery,
|
|
0.56,
|
|
unused,
|
|
unused,
|
|
mid,
|
|
c1,
|
|
c2
|
|
);
|
|
var endOfArrow = tempPointAt(mid.x, mid.y);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Line,
|
|
(startOfArrow.x * 0.1 + 0.95 * 0.9) * w,
|
|
startOfArrow.y * 0.1 * h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.85 * w, startOfArrow.y * 0.1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.85 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.15 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, (endOfArrow.x * 0.1 + 0.9) * w, 0.15 * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Line,
|
|
(endOfArrow.x * 0.1 + 0.9) * w,
|
|
(endOfArrow.y * 0.1 + 0.05 * 0.9) * h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, endOfArrow.x * w, endOfArrow.y * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, (centerx + radius) * w, centery * h, c1.x * w, c1.y * h, c2.x * w, c2.y * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
radius = 0.35;
|
|
cpOffset = KAPPA * 0.35;
|
|
var fig2 = new go.PathFigure(centerx * w, (centery - radius) * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
var fig3 = new go.PathFigure((centerx - radius) * w, centery * h, false);
|
|
geo.add(fig3);
|
|
freePoint(unused);
|
|
freePoint(mid);
|
|
freePoint(c1);
|
|
freePoint(c2);
|
|
freePoint(startOfArrow);
|
|
freePoint(endOfArrow);
|
|
geo.spot1 = new go.Spot(0.202, 0.257);
|
|
geo.spot2 = new go.Spot(0.792, 0.739);
|
|
geo.defaultStretch = go.GraphObject.Uniform;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("GenderFemale", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var r = 0.375;
|
|
var cx = 0;
|
|
var cy = -0.125;
|
|
var d = r * KAPPA;
|
|
var fig = new go.PathFigure((0.525 + cx) * w, (0.5 + r + cy) * h, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(1 - 0.5 + r + cx) * w,
|
|
(0.5 + cy) * h,
|
|
(0.5 + d + cx) * w,
|
|
(0.5 + r + cy) * h,
|
|
(0.5 + r + cx) * w,
|
|
(0.5 + d + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 + cx) * w,
|
|
(0.5 - r + cy) * h,
|
|
(1 - 0.5 + r + cx) * w,
|
|
(0.5 - d + cy) * h,
|
|
(0.5 + d + cx) * w,
|
|
(0.5 - r + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 + cy) * h,
|
|
(0.5 - d + cx) * w,
|
|
(0.5 - r + cy) * h,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 - d + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.475 + cx) * w,
|
|
(0.5 + r + cy) * h,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 + d + cy) * h,
|
|
(0.5 - d + cx) * w,
|
|
(0.5 + r + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.475 * w, 0.85 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.425 * w, 0.85 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.425 * w, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.475 * w, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.475 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.525 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.525 * w, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.575 * w, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.575 * w, 0.85 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.525 * w, 0.85 * h).close());
|
|
r = 0.325;
|
|
cx = 0;
|
|
cy = -0.125;
|
|
d = r * KAPPA;
|
|
var fig = new go.PathFigure((1 - 0.5 + r + cx) * w, (0.5 + cy) * h, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 + cx) * w,
|
|
(0.5 + r + cy) * h,
|
|
(0.5 + r + cx) * w,
|
|
(0.5 + d + cy) * h,
|
|
(0.5 + d + cx) * w,
|
|
(0.5 + r + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 + cy) * h,
|
|
(0.5 - d + cx) * w,
|
|
(0.5 + r + cy) * h,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 + d + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 + cx) * w,
|
|
(0.5 - r + cy) * h,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 - d + cy) * h,
|
|
(0.5 - d + cx) * w,
|
|
(0.5 - r + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(1 - 0.5 + r + cx) * w,
|
|
(0.5 + cy) * h,
|
|
(0.5 + d + cx) * w,
|
|
(0.5 - r + cy) * h,
|
|
(1 - 0.5 + r + cx) * w,
|
|
(0.5 - d + cy) * h
|
|
));
|
|
var fig = new go.PathFigure((0.525 + cx) * w, (0.5 + r + cy) * h, false);
|
|
geo.add(fig);
|
|
geo.spot1 = new go.Spot(0.232, 0.136);
|
|
geo.spot2 = new go.Spot(0.682, 0.611);
|
|
geo.defaultStretch = go.GraphObject.Uniform;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("LogicImplies", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.2;
|
|
return new go.Geometry().add(new go.PathFigure((1 - param1) * w, 0, false).add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, (1 - param1) * w, h)).add(new go.PathSegment(go.PathSegment.Move, 0, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h))).setSpots(0, 0, 0.8, 0.5);
|
|
});
|
|
go.Shape.defineFigureGenerator("LogicIff", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.2;
|
|
return new go.Geometry().add(new go.PathFigure((1 - param1) * w, 0, false).add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, (1 - param1) * w, h)).add(new go.PathSegment(go.PathSegment.Move, 0, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Move, param1 * w, 0)).add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, param1 * w, h))).setSpots(0.2, 0, 0.8, 0.5);
|
|
});
|
|
go.Shape.defineFigureGenerator("LogicNot", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, false).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Line, w, h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("LogicAnd", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, h, false).add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0)).add(new go.PathSegment(go.PathSegment.Line, w, h))).setSpots(0.25, 0.5, 0.75, 1);
|
|
});
|
|
go.Shape.defineFigureGenerator("LogicOr", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, false).add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h)).add(new go.PathSegment(go.PathSegment.Line, w, 0))).setSpots(0.219, 0, 0.78, 0.409);
|
|
});
|
|
go.Shape.defineFigureGenerator("LogicXor", function(shape, w, h) {
|
|
var geo = new go.Geometry().add(new go.PathFigure(0.5 * w, 0, false).add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h)).add(new go.PathSegment(go.PathSegment.Move, 0, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Arc, 0, 360, 0.5 * w, 0.5 * h, 0.5 * w, 0.5 * h)));
|
|
geo.defaultStretch = go.GraphObject.Uniform;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("LogicTruth", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, false).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0)).add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("LogicFalsity", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, h, false).add(new go.PathSegment(go.PathSegment.Line, w, h)).add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, h)).add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0)));
|
|
});
|
|
go.Shape.defineFigureGenerator("LogicThereExists", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, false).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Move, w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, w, h)).add(new go.PathSegment(go.PathSegment.Line, 0, h)));
|
|
});
|
|
go.Shape.defineFigureGenerator("LogicForAll", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, false).add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h)).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Move, 0.25 * w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0.5 * h))).setSpots(0.25, 0, 0.75, 0.5);
|
|
});
|
|
go.Shape.defineFigureGenerator("LogicIsDefinedAs", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, false).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Move, 0, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Move, 0, h)).add(new go.PathSegment(go.PathSegment.Line, w, h))).setSpots(0.01, 0.01, 0.99, 0.49);
|
|
});
|
|
go.Shape.defineFigureGenerator("LogicIntersect", function(shape, w, h) {
|
|
var radius = 0.5;
|
|
return new go.Geometry().add(new go.PathFigure(0, h, false).add(new go.PathSegment(go.PathSegment.Line, 0, radius * h)).add(new go.PathSegment(go.PathSegment.Arc, 180, 180, radius * w, radius * h, radius * w, radius * h)).add(new go.PathSegment(go.PathSegment.Line, w, h))).setSpots(0, 0.5, 1, 1);
|
|
});
|
|
go.Shape.defineFigureGenerator("LogicUnion", function(shape, w, h) {
|
|
var radius = 0.5;
|
|
return new go.Geometry().add(new go.PathFigure(w, 0, false).add(new go.PathSegment(go.PathSegment.Line, w, radius * h)).add(new go.PathSegment(go.PathSegment.Arc, 0, 180, radius * w, radius * h, radius * w, radius * h)).add(new go.PathSegment(go.PathSegment.Line, 0, 0))).setSpots(0, 0, 1, 0.5);
|
|
});
|
|
go.Shape.setFigureParameter("Arrow", 0, new FigureParameter("ArrowheadWidth", 0.3, 0.01, 0.99));
|
|
go.Shape.setFigureParameter("Arrow", 1, new FigureParameter("TailHeight", 0.3, 0.01, 0.99));
|
|
go.Shape.defineFigureGenerator("Arrow", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.3;
|
|
var param2 = shape ? shape.parameter2 : NaN;
|
|
if (isNaN(param2))
|
|
param2 = 0.3;
|
|
var x = (1 - param1) * w;
|
|
var y1 = (0.5 - param2 / 2) * h;
|
|
var y2 = (0.5 + param2 / 2) * h;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, y1, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, x, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, x, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, x, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, x, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, y2).close());
|
|
geo.spot1 = new go.Spot(0, y1 / h);
|
|
var temp = getIntersection(
|
|
0,
|
|
y2 / h,
|
|
1,
|
|
y2 / h,
|
|
x / w,
|
|
1,
|
|
1,
|
|
0.5,
|
|
tempPoint()
|
|
);
|
|
geo.spot2 = new go.Spot(temp.x, temp.y);
|
|
freePoint(temp);
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("Arrow2", 0, new FigureParameter("ArrowheadWidth", 30));
|
|
go.Shape.setFigureParameter("Arrow2", 0, new FigureParameter("TailHeight", 30));
|
|
go.Shape.defineFigureGenerator("Arrow2", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 30;
|
|
if (param1 > w)
|
|
param1 = w;
|
|
var param2 = shape ? shape.parameter2 : NaN;
|
|
if (isNaN(param2))
|
|
param2 = 30;
|
|
param2 = Math.min(param2, h / 2);
|
|
var x = w - param1;
|
|
var y1 = (h - param2) / 2;
|
|
var y2 = y1 + param2;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, y1, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, x, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, x, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, x, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, x, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, y2).close());
|
|
geo.spot1 = new go.Spot(0, y1 / h);
|
|
var temp = getIntersection(
|
|
0,
|
|
y2 / h,
|
|
1,
|
|
y2 / h,
|
|
x / w,
|
|
1,
|
|
1,
|
|
0.5,
|
|
tempPoint()
|
|
);
|
|
geo.spot2 = new go.Spot(temp.x, temp.y);
|
|
freePoint(temp);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Chevron", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.5 * h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("DoubleArrow", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, 0.214 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 1 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, 1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, 0.786 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 1 * h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("DoubleEndArrow", 0, new FigureParameter("ConnecterHeight", 0.3, 0.01, 0.99));
|
|
go.Shape.defineFigureGenerator("DoubleEndArrow", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.3;
|
|
var y1 = (0.5 - param1 / 2) * h;
|
|
var y2 = (0.5 + param1 / 2) * h;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0).close());
|
|
var temp = getIntersection(
|
|
0,
|
|
0.5,
|
|
0.3,
|
|
0,
|
|
0,
|
|
y1 / h,
|
|
0.1,
|
|
y1 / h,
|
|
tempPoint()
|
|
);
|
|
geo.spot1 = new go.Spot(temp.x, temp.y);
|
|
temp = getIntersection(
|
|
0.7,
|
|
1,
|
|
1,
|
|
0.5,
|
|
0,
|
|
y2 / h,
|
|
1,
|
|
y2 / h,
|
|
temp
|
|
);
|
|
geo.spot2 = new go.Spot(temp.x, temp.y);
|
|
freePoint(temp);
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("DoubleEndArrow2", 0, new FigureParameter("ConnecterHeight", 40));
|
|
go.Shape.setFigureParameter("DoubleEndArrow2", 1, new FigureParameter("ArrowHeight", 100));
|
|
go.Shape.defineFigureGenerator("DoubleEndArrow2", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 40;
|
|
var param2 = shape ? shape.parameter2 : NaN;
|
|
if (isNaN(param2))
|
|
param2 = 100;
|
|
var y1 = (h - param1) / 2;
|
|
var y2 = y1 + param1;
|
|
var y1outer = (h - param2) / 2;
|
|
var y2outer = y1outer + param2;
|
|
if (param1 > h || param2 > h) {
|
|
if (param2 > param1) {
|
|
param1 = param1 * h / param2;
|
|
y1 = (h - param1) / 2;
|
|
y2 = y1 + param1;
|
|
y1outer = 0;
|
|
y2outer = h;
|
|
} else {
|
|
y1 = 0;
|
|
y2 = h;
|
|
y1outer = 0;
|
|
y2outer = h;
|
|
}
|
|
}
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y2outer));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, y2outer));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, y1outer));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y1outer).close());
|
|
var temp = getIntersection(
|
|
0,
|
|
0.5,
|
|
0.3,
|
|
y1outer / h,
|
|
0,
|
|
y1 / h,
|
|
1,
|
|
y1 / h,
|
|
tempPoint()
|
|
);
|
|
geo.spot1 = new go.Spot(temp.x, temp.y);
|
|
temp = getIntersection(
|
|
0.7,
|
|
y2outer / h,
|
|
1,
|
|
0.5,
|
|
0,
|
|
y2 / h,
|
|
1,
|
|
y2 / h,
|
|
temp
|
|
);
|
|
geo.spot2 = new go.Spot(temp.x, temp.y);
|
|
freePoint(temp);
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("IBeamArrow", 0, new FigureParameter("ConnectorHeight", 0.7, 0.51, 0.97));
|
|
go.Shape.defineFigureGenerator("IBeamArrow", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.3;
|
|
var y1 = (0.5 - param1 / 2) * h;
|
|
var y2 = (0.5 + param1 / 2) * h;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0).close());
|
|
geo.spot1 = new go.Spot(0, y1 / h);
|
|
var temp = getIntersection(
|
|
0.7,
|
|
1,
|
|
1,
|
|
0.5,
|
|
0,
|
|
y2 / h,
|
|
1,
|
|
y2 / h,
|
|
tempPoint()
|
|
);
|
|
geo.spot2 = new go.Spot(temp.x, temp.y);
|
|
freePoint(temp);
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("IBeamArrow2", 0, new FigureParameter("ConnectorHeight", 40));
|
|
go.Shape.setFigureParameter("IBeamArrow2", 1, new FigureParameter("BeamArrowHeight", 100));
|
|
go.Shape.defineFigureGenerator("IBeamArrow2", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 40;
|
|
var param2 = shape ? shape.parameter2 : NaN;
|
|
if (isNaN(param2))
|
|
param2 = 100;
|
|
var y1 = (h - param1) / 2;
|
|
var y2 = y1 + param1;
|
|
var y1outer = (h - param2) / 2;
|
|
var y2outer = y1outer + param2;
|
|
if (param1 > h || param2 > h) {
|
|
if (param2 > param1) {
|
|
param1 = param1 * h / param2;
|
|
y1 = (h - param1) / 2;
|
|
y2 = y1 + param1;
|
|
y1outer = 0;
|
|
y2outer = h;
|
|
} else {
|
|
y1 = 0;
|
|
y2 = h;
|
|
y1outer = 0;
|
|
y2outer = h;
|
|
}
|
|
}
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y2outer));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, y2outer));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, y2outer));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, y1outer));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, y1outer));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y1outer).close());
|
|
geo.spot1 = new go.Spot(0, y1 / h);
|
|
var temp = getIntersection(
|
|
0.7,
|
|
y2outer / h,
|
|
1,
|
|
0.5,
|
|
0,
|
|
y2 / h,
|
|
1,
|
|
y2 / h,
|
|
tempPoint()
|
|
);
|
|
geo.spot2 = new go.Spot(temp.x, temp.y);
|
|
freePoint(temp);
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("Pointer", 0, new FigureParameter("BackPoint", 0.1, 0, 0.2));
|
|
go.Shape.defineFigureGenerator("Pointer", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.1;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, param1 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0).close());
|
|
geo.spot1 = new go.Spot(param1, 0.35);
|
|
var temp = getIntersection(0.2, 0.65, 1, 0.65, 0, 1, 1, 0.5, tempPoint());
|
|
geo.spot2 = new go.Spot(temp.x, temp.y);
|
|
freePoint(temp);
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("RoundedPointer", 0, new FigureParameter("RoundedEdge", 0.3, 0, 0.5));
|
|
go.Shape.defineFigureGenerator("RoundedPointer", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.3;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0,
|
|
param1 * w,
|
|
0.75 * h,
|
|
param1 * w,
|
|
0.25 * h
|
|
).close());
|
|
geo.spot1 = new go.Spot(param1, 0.35);
|
|
var temp = getIntersection(0, 0.65, 1, 0.65, 0, 1, 1, 0.5, tempPoint());
|
|
geo.spot2 = new go.Spot(temp.x, temp.y);
|
|
freePoint(temp);
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("SplitEndArrow", 0, new FigureParameter("TailHeight", 0.4, 0.01, 0.99));
|
|
go.Shape.defineFigureGenerator("SplitEndArrow", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.4;
|
|
var y1 = (0.5 - param1 / 2) * h;
|
|
var y2 = (0.5 + param1 / 2) * h;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0).close());
|
|
geo.spot1 = new go.Spot(0.2, 0.3);
|
|
var temp = getIntersection(
|
|
0.7,
|
|
1,
|
|
1,
|
|
0.5,
|
|
0,
|
|
y2 / h,
|
|
1,
|
|
y2 / h,
|
|
tempPoint()
|
|
);
|
|
geo.spot2 = new go.Spot(temp.x, temp.y);
|
|
freePoint(temp);
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("SplitEndArrow2", 0, new FigureParameter("TailThickness", 50));
|
|
go.Shape.defineFigureGenerator("SplitEndArrow2", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 50;
|
|
var y1 = (h - param1) / 2;
|
|
var y2 = y1 + param1;
|
|
if (param1 > h) {
|
|
y1 = 0;
|
|
y2 = h;
|
|
}
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, y2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, y1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0).close());
|
|
geo.spot1 = new go.Spot(0.2, y1 / h);
|
|
var temp = getIntersection(
|
|
0.7,
|
|
1,
|
|
1,
|
|
0.5,
|
|
0,
|
|
y2 / h,
|
|
1,
|
|
y2 / h,
|
|
tempPoint()
|
|
);
|
|
geo.spot2 = new go.Spot(temp.x, temp.y);
|
|
freePoint(temp);
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("SquareArrow", 0, new FigureParameter("ArrowPoint", 0.7, 0.2, 0.9));
|
|
go.Shape.defineFigureGenerator("SquareArrow", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.7;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, param1 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, param1 * w, 0).close());
|
|
geo.spot1 = go.Spot.TopLeft;
|
|
geo.spot2 = new go.Spot(param1, 1);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Cone1", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpxOffset = KAPPA * 0.5;
|
|
var cpyOffset = KAPPA * 0.1;
|
|
var fig = new go.PathFigure(0, 0.9 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.9 * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
h,
|
|
w,
|
|
(0.9 + cpyOffset) * h,
|
|
(0.5 + cpxOffset) * w,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0.9 * h,
|
|
(0.5 - cpxOffset) * w,
|
|
h,
|
|
0,
|
|
(0.9 + cpyOffset) * h
|
|
).close());
|
|
geo.spot1 = new go.Spot(0.25, 0.5);
|
|
geo.spot2 = new go.Spot(0.75, 0.97);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Cone2", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.9 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
0.9 * h,
|
|
(1 - 0.85 / 0.9) * w,
|
|
h,
|
|
0.85 / 0.9 * w,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.9 * h).close());
|
|
var fig2 = new go.PathFigure(0, 0.9 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
0.9 * h,
|
|
(1 - 0.85 / 0.9) * w,
|
|
0.8 * h,
|
|
0.85 / 0.9 * w,
|
|
0.8 * h
|
|
));
|
|
geo.spot1 = new go.Spot(0.25, 0.5);
|
|
geo.spot2 = new go.Spot(0.75, 0.82);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Cube1", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.5 * w, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.85 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.15 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.15 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.85 * h).close());
|
|
var fig2 = new go.PathFigure(0.5 * w, h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.3 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, 0.15 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0.3 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0.15 * h));
|
|
geo.spot1 = new go.Spot(0, 0.3);
|
|
geo.spot2 = new go.Spot(0.5, 0.85);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Cube2", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.3 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.7 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, 0).close());
|
|
var fig2 = new go.PathFigure(0, 0.3 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0.3 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.7 * w, 0.3 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, h));
|
|
geo.spot1 = new go.Spot(0, 0.3);
|
|
geo.spot2 = new go.Spot(0.7, 1);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Cylinder1", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 5;
|
|
param1 = Math.min(param1, h / 3);
|
|
var geo = new go.Geometry();
|
|
var cpxOffset = KAPPA * 0.5;
|
|
var fig = new go.PathFigure(0, param1, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
0,
|
|
0,
|
|
KAPPA * param1,
|
|
(0.5 - cpxOffset) * w,
|
|
0
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
1 * w,
|
|
param1,
|
|
(0.5 + cpxOffset) * w,
|
|
0,
|
|
1 * w,
|
|
KAPPA * param1
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h - param1));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
1 * h,
|
|
1 * w,
|
|
h - KAPPA * param1,
|
|
(0.5 + cpxOffset) * w,
|
|
1 * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
h - param1,
|
|
(0.5 - cpxOffset) * w,
|
|
1 * h,
|
|
0,
|
|
h - KAPPA * param1
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, param1));
|
|
var fig2 = new go.PathFigure(w, param1, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
2 * param1,
|
|
1 * w,
|
|
2 * param1 - KAPPA * param1,
|
|
(0.5 + cpxOffset) * w,
|
|
2 * param1
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
param1,
|
|
(0.5 - cpxOffset) * w,
|
|
2 * param1,
|
|
0,
|
|
2 * param1 - KAPPA * param1
|
|
));
|
|
geo.spot1 = new go.Spot(0, 0, 0, 2 * param1);
|
|
geo.spot2 = new go.Spot(1, 1);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Cylinder2", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 5;
|
|
param1 = Math.min(param1, h / 3);
|
|
var geo = new go.Geometry();
|
|
var cpxOffset = KAPPA * 0.5;
|
|
var fig = new go.PathFigure(0, h - param1, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, param1));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
0,
|
|
0,
|
|
KAPPA * param1,
|
|
(0.5 - cpxOffset) * w,
|
|
0
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
param1,
|
|
(0.5 + cpxOffset) * w,
|
|
0,
|
|
w,
|
|
KAPPA * param1
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h - param1));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
h,
|
|
w,
|
|
h - KAPPA * param1,
|
|
(0.5 + cpxOffset) * w,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
h - param1,
|
|
(0.5 - cpxOffset) * w,
|
|
h,
|
|
0,
|
|
h - KAPPA * param1
|
|
));
|
|
var fig2 = new go.PathFigure(0, h - param1, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
h - 2 * param1,
|
|
0,
|
|
h - param1 - KAPPA * param1,
|
|
(0.5 - cpxOffset) * w,
|
|
h - 2 * param1
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
h - param1,
|
|
(0.5 + cpxOffset) * w,
|
|
h - 2 * param1,
|
|
w,
|
|
h - param1 - KAPPA * param1
|
|
));
|
|
geo.spot1 = new go.Spot(0, 0);
|
|
geo.spot2 = new go.Spot(1, 1, 0, -2 * param1);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Cylinder3", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 5;
|
|
param1 = Math.min(param1, w / 3);
|
|
var geo = new go.Geometry();
|
|
var cpyOffset = KAPPA * 0.5;
|
|
var fig = new go.PathFigure(param1, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w - param1, 0));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
0.5 * h,
|
|
w - KAPPA * param1,
|
|
0,
|
|
w,
|
|
(0.5 - cpyOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w - param1,
|
|
h,
|
|
w,
|
|
(0.5 + cpyOffset) * h,
|
|
w - KAPPA * param1,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, param1, h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0.5 * h,
|
|
KAPPA * param1,
|
|
h,
|
|
0,
|
|
(0.5 + cpyOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
param1,
|
|
0,
|
|
0,
|
|
(0.5 - cpyOffset) * h,
|
|
KAPPA * param1,
|
|
0
|
|
));
|
|
var fig2 = new go.PathFigure(param1, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
2 * param1,
|
|
0.5 * h,
|
|
param1 + KAPPA * param1,
|
|
0,
|
|
2 * param1,
|
|
(0.5 - cpyOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
param1,
|
|
h,
|
|
2 * param1,
|
|
(0.5 + cpyOffset) * h,
|
|
param1 + KAPPA * param1,
|
|
h
|
|
));
|
|
geo.spot1 = new go.Spot(0, 0, 2 * param1, 0);
|
|
geo.spot2 = new go.Spot(1, 1);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Cylinder4", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 5;
|
|
param1 = Math.min(param1, w / 3);
|
|
var geo = new go.Geometry();
|
|
var cpyOffset = KAPPA * 0.5;
|
|
var fig = new go.PathFigure(w - param1, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
0.5 * h,
|
|
w - KAPPA * param1,
|
|
0,
|
|
w,
|
|
(0.5 - cpyOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w - param1,
|
|
h,
|
|
w,
|
|
(0.5 + cpyOffset) * h,
|
|
w - KAPPA * param1,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, param1, h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0.5 * h,
|
|
KAPPA * param1,
|
|
h,
|
|
0,
|
|
(0.5 + cpyOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
param1,
|
|
0,
|
|
0,
|
|
(0.5 - cpyOffset) * h,
|
|
KAPPA * param1,
|
|
0
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w - param1, 0));
|
|
var fig2 = new go.PathFigure(w - param1, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w - 2 * param1,
|
|
0.5 * h,
|
|
w - param1 - KAPPA * param1,
|
|
0,
|
|
w - 2 * param1,
|
|
(0.5 - cpyOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w - param1,
|
|
h,
|
|
w - 2 * param1,
|
|
(0.5 + cpyOffset) * h,
|
|
w - param1 - KAPPA * param1,
|
|
h
|
|
));
|
|
geo.spot1 = new go.Spot(0, 0);
|
|
geo.spot2 = new go.Spot(1, 1, -2 * param1, 0);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Prism1", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.25 * w, 0.25 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
var fig2 = new go.PathFigure(0.25 * w, 0.25 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
geo.spot1 = new go.Spot(0.408, 0.172);
|
|
geo.spot2 = new go.Spot(0.833, 0.662);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Prism2", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.25 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.25 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0.75 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
var fig2 = new go.PathFigure(0, h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.25 * w, 0.5 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0.25 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0, 0.25 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.25 * w, 0.5 * h));
|
|
geo.spot1 = new go.Spot(0.25, 0.5);
|
|
geo.spot2 = new go.Spot(0.75, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Pyramid1", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.5 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.75 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.75 * h).close());
|
|
var fig2 = new go.PathFigure(0.5 * w, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
geo.spot1 = new go.Spot(0.25, 0.367);
|
|
geo.spot2 = new go.Spot(0.75, 0.875);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Pyramid2", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.5 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.85 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.85 * h).close());
|
|
var fig2 = new go.PathFigure(0.5 * w, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.7 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, 0.85 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0.7 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0.85 * h));
|
|
geo.spot1 = new go.Spot(0.25, 0.367);
|
|
geo.spot2 = new go.Spot(0.75, 0.875);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Actor", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var radiusw = 0.2;
|
|
var radiush = 0.1;
|
|
var offsetw = KAPPA * radiusw;
|
|
var offseth = KAPPA * radiush;
|
|
var centerx = 0.5;
|
|
var centery = 0.1;
|
|
var fig = new go.PathFigure(centerx * w, (centery + radiush) * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radiusw) * w,
|
|
centery * h,
|
|
(centerx - offsetw) * w,
|
|
(centery + radiush) * h,
|
|
(centerx - radiusw) * w,
|
|
(centery + offseth) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radiush) * h,
|
|
(centerx - radiusw) * w,
|
|
(centery - offseth) * h,
|
|
(centerx - offsetw) * w,
|
|
(centery - radiush) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radiusw) * w,
|
|
centery * h,
|
|
(centerx + offsetw) * w,
|
|
(centery - radiush) * h,
|
|
(centerx + radiusw) * w,
|
|
(centery - offseth) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radiush) * h,
|
|
(centerx + radiusw) * w,
|
|
(centery + offseth) * h,
|
|
(centerx + offsetw) * w,
|
|
(centery + radiush) * h
|
|
));
|
|
var r = 0.05;
|
|
var cpOffset = KAPPA * r;
|
|
centerx = 0.05;
|
|
centery = 0.25;
|
|
var fig2 = new go.PathFigure(0.5 * w, 0.2 * h, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.95 * w, 0.2 * h));
|
|
centerx = 0.95;
|
|
centery = 0.25;
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + r) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - r) * h,
|
|
(centerx + r) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0.6 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.85 * w, 0.6 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.85 * w, 0.35 * h));
|
|
r = 0.025;
|
|
cpOffset = KAPPA * r;
|
|
centerx = 0.825;
|
|
centery = 0.35;
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - r) * h,
|
|
(centerx + r) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - r) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - r) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - r) * h,
|
|
(centerx - r) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.55 * w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.55 * w, 0.7 * h));
|
|
r = 0.05;
|
|
cpOffset = KAPPA * r;
|
|
centerx = 0.5;
|
|
centery = 0.7;
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - r) * h,
|
|
(centerx + r) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - r) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - r) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - r) * h,
|
|
(centerx - r) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.45 * w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.35 * h));
|
|
r = 0.025;
|
|
cpOffset = KAPPA * r;
|
|
centerx = 0.175;
|
|
centery = 0.35;
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - r) * h,
|
|
(centerx + r) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - r) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - r) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - r) * h,
|
|
(centerx - r) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.15 * w, 0.6 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, 0.6 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, 0.25 * h));
|
|
r = 0.05;
|
|
cpOffset = KAPPA * r;
|
|
centerx = 0.05;
|
|
centery = 0.25;
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - r) * h,
|
|
(centerx - r) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - r) * h
|
|
));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.2 * h));
|
|
geo.spot1 = new go.Spot(0.2, 0.2);
|
|
geo.spot2 = new go.Spot(0.8, 0.65);
|
|
return geo;
|
|
});
|
|
go.Shape.setFigureParameter("Card", 0, new FigureParameter("CornerCutoutSize", 0.2, 0.1, 0.9));
|
|
go.Shape.defineFigureGenerator("Card", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.2;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, param1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, param1 * w, 0).close());
|
|
geo.spot1 = new go.Spot(0, param1);
|
|
geo.spot2 = go.Spot.BottomRight;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Collate", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.5 * w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.5 * h));
|
|
var fig2 = new go.PathFigure(0.5 * w, 0.5 * h, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.5 * h));
|
|
geo.spot1 = new go.Spot(0.25, 0);
|
|
geo.spot2 = new go.Spot(0.75, 0.25);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("CreateRequest", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.1;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
var fig2 = new go.PathFigure(0, param1 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, param1 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0, (1 - param1) * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, (1 - param1) * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Database", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpxOffset = KAPPA * 0.5;
|
|
var cpyOffset = KAPPA * 0.1;
|
|
var fig = new go.PathFigure(w, 0.1 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.9 * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
h,
|
|
w,
|
|
(0.9 + cpyOffset) * h,
|
|
(0.5 + cpxOffset) * w,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0.9 * h,
|
|
(0.5 - cpxOffset) * w,
|
|
h,
|
|
0,
|
|
(0.9 + cpyOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.1 * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
0,
|
|
0,
|
|
(0.1 - cpyOffset) * h,
|
|
(0.5 - cpxOffset) * w,
|
|
0
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
0.1 * h,
|
|
(0.5 + cpxOffset) * w,
|
|
0,
|
|
w,
|
|
(0.1 - cpyOffset) * h
|
|
));
|
|
var fig2 = new go.PathFigure(w, 0.1 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
0.2 * h,
|
|
w,
|
|
(0.1 + cpyOffset) * h,
|
|
(0.5 + cpxOffset) * w,
|
|
0.2 * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0.1 * h,
|
|
(0.5 - cpxOffset) * w,
|
|
0.2 * h,
|
|
0,
|
|
(0.1 + cpyOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, w, 0.2 * h));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
0.3 * h,
|
|
w,
|
|
(0.2 + cpyOffset) * h,
|
|
(0.5 + cpxOffset) * w,
|
|
0.3 * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0.2 * h,
|
|
(0.5 - cpxOffset) * w,
|
|
0.3 * h,
|
|
0,
|
|
(0.2 + cpyOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, w, 0.3 * h));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
0.4 * h,
|
|
w,
|
|
(0.3 + cpyOffset) * h,
|
|
(0.5 + cpxOffset) * w,
|
|
0.4 * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0.3 * h,
|
|
(0.5 - cpxOffset) * w,
|
|
0.4 * h,
|
|
0,
|
|
(0.3 + cpyOffset) * h
|
|
));
|
|
geo.spot1 = new go.Spot(0, 0.4);
|
|
geo.spot2 = new go.Spot(1, 0.9);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("DataStorage", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.75 * w, h, w, 0, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0, 0, 0.25 * w, 0.9 * h, 0.25 * w, 0.1 * h).close());
|
|
geo.spot1 = new go.Spot(0.226, 0);
|
|
geo.spot2 = new go.Spot(0.81, 1);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("DiskStorage", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpxOffset = KAPPA * 0.5;
|
|
var cpyOffset = KAPPA * 0.1;
|
|
var fig = new go.PathFigure(w, 0.1 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.9 * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
h,
|
|
w,
|
|
(0.9 + cpyOffset) * h,
|
|
(0.5 + cpxOffset) * w,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0.9 * h,
|
|
(0.5 - cpxOffset) * w,
|
|
h,
|
|
0,
|
|
(0.9 + cpyOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.1 * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
0,
|
|
0,
|
|
(0.1 - cpyOffset) * h,
|
|
(0.5 - cpxOffset) * w,
|
|
0
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
0.1 * h,
|
|
(0.5 + cpxOffset) * w,
|
|
0,
|
|
w,
|
|
(0.1 - cpyOffset) * h
|
|
));
|
|
var fig2 = new go.PathFigure(w, 0.1 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
0.2 * h,
|
|
w,
|
|
(0.1 + cpyOffset) * h,
|
|
(0.5 + cpxOffset) * w,
|
|
0.2 * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0.1 * h,
|
|
(0.5 - cpxOffset) * w,
|
|
0.2 * h,
|
|
0,
|
|
(0.1 + cpyOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, w, 0.2 * h));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
0.3 * h,
|
|
w,
|
|
(0.2 + cpyOffset) * h,
|
|
(0.5 + cpxOffset) * w,
|
|
0.3 * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0.2 * h,
|
|
(0.5 - cpxOffset) * w,
|
|
0.3 * h,
|
|
0,
|
|
(0.2 + cpyOffset) * h
|
|
));
|
|
geo.spot1 = new go.Spot(0, 0.3);
|
|
geo.spot2 = new go.Spot(1, 0.9);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Display", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.25 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.75 * w, h, w, 0, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.25 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h).close());
|
|
geo.spot1 = new go.Spot(0.25, 0);
|
|
geo.spot2 = new go.Spot(0.75, 1);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("DividedEvent", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.2;
|
|
else if (param1 < 0.15)
|
|
param1 = 0.15;
|
|
var cpOffset = KAPPA * 0.2;
|
|
var fig = new go.PathFigure(0, 0.2 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.2 * w,
|
|
0,
|
|
0,
|
|
(0.2 - cpOffset) * h,
|
|
(0.2 - cpOffset) * w,
|
|
0
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
0.2 * h,
|
|
(0.8 + cpOffset) * w,
|
|
0,
|
|
w,
|
|
(0.2 - cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.8 * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.8 * w,
|
|
h,
|
|
w,
|
|
(0.8 + cpOffset) * h,
|
|
(0.8 + cpOffset) * w,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0.8 * h,
|
|
(0.2 - cpOffset) * w,
|
|
h,
|
|
0,
|
|
(0.8 + cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.2 * h));
|
|
var fig2 = new go.PathFigure(0, param1 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, param1 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("DividedProcess", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1) || param1 < 0.1)
|
|
param1 = 0.1;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
var fig2 = new go.PathFigure(0, param1 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, param1 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Document", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
h = h / 0.8;
|
|
var fig = new go.PathFigure(0, 0.7 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.7 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0, 0.7 * h, 0.5 * w, 0.4 * h, 0.5 * w, h).close());
|
|
geo.spot1 = go.Spot.TopLeft;
|
|
geo.spot2 = new go.Spot(1, 0.6);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("ExternalOrganization", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1) || param1 < 0.2)
|
|
param1 = 0.2;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
var fig2 = new go.PathFigure(param1 * w, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, param1 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, w, param1 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, (1 - param1) * w, 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0, (1 - param1) * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, param1 * w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, (1 - param1) * w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, (1 - param1) * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("ExternalProcess", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.5 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h).close());
|
|
var fig2 = new go.PathFigure(0.1 * w, 0.4 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0.6 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.9 * w, 0.6 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.4 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.6 * w, 0.1 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0.1 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.4 * w, 0.9 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0.9 * h));
|
|
geo.spot1 = new go.Spot(0.25, 0.25);
|
|
geo.spot2 = new go.Spot(0.75, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("File", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.25 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
var fig2 = new go.PathFigure(0.75 * w, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0.25 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0.25 * h));
|
|
geo.spot1 = new go.Spot(0, 0.25);
|
|
geo.spot2 = go.Spot.BottomRight;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Interrupt", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
var fig2 = new go.PathFigure(w, 0.5 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
var fig3 = new go.PathFigure(w, 0.5 * h, false);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
geo.spot1 = new go.Spot(0, 0.25);
|
|
geo.spot2 = new go.Spot(0.5, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("InternalStorage", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
var param2 = shape ? shape.parameter2 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.1;
|
|
if (isNaN(param2))
|
|
param2 = 0.1;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
var fig2 = new go.PathFigure(param1 * w, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, param1 * w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0, param2 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, param2 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Junction", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var dist = 1 / Math.SQRT2;
|
|
var small = (1 - 1 / Math.SQRT2) / 2;
|
|
var cpOffset = KAPPA * 0.5;
|
|
var radius = 0.5;
|
|
var fig = new go.PathFigure(w, radius * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
radius * w,
|
|
h,
|
|
w,
|
|
(radius + cpOffset) * h,
|
|
(radius + cpOffset) * w,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
radius * h,
|
|
(radius - cpOffset) * w,
|
|
h,
|
|
0,
|
|
(radius + cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
radius * w,
|
|
0,
|
|
0,
|
|
(radius - cpOffset) * h,
|
|
(radius - cpOffset) * w,
|
|
0
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
radius * h,
|
|
(radius + cpOffset) * w,
|
|
0,
|
|
w,
|
|
(radius - cpOffset) * h
|
|
));
|
|
var fig2 = new go.PathFigure((small + dist) * w, (small + dist) * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, small * w, small * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, small * w, (small + dist) * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, (small + dist) * w, small * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("LinedDocument", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
h = h / 0.8;
|
|
var fig = new go.PathFigure(0, 0.7 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.7 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0, 0.7 * h, 0.5 * w, 0.4 * h, 0.5 * w, h).close());
|
|
var fig2 = new go.PathFigure(0.1 * w, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0.75 * h));
|
|
geo.spot1 = new go.Spot(0.1, 0);
|
|
geo.spot2 = new go.Spot(1, 0.6);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("LoopLimit", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.25 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.25 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.25 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h).close());
|
|
geo.spot1 = new go.Spot(0, 0.25);
|
|
geo.spot2 = go.Spot.BottomRight;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("MagneticTape", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpOffset = KAPPA * 0.5;
|
|
var radius = 0.5;
|
|
var fig = new go.PathFigure(0.5 * w, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
radius * h,
|
|
(radius - cpOffset) * w,
|
|
h,
|
|
0,
|
|
(radius + cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
radius * w,
|
|
0,
|
|
0,
|
|
(radius - cpOffset) * h,
|
|
(radius - cpOffset) * w,
|
|
0
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
radius * h,
|
|
(radius + cpOffset) * w,
|
|
0,
|
|
w,
|
|
(radius - cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(radius + 0.1) * w,
|
|
0.9 * h,
|
|
w,
|
|
(radius + cpOffset) * h,
|
|
(radius + cpOffset) * w,
|
|
0.9 * h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
geo.spot1 = new go.Spot(0.15, 0.15);
|
|
geo.spot2 = new go.Spot(0.85, 0.8);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("ManualInput", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.25 * h).close());
|
|
geo.spot1 = new go.Spot(0, 0.25);
|
|
geo.spot2 = go.Spot.BottomRight;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("MessageFromUser", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.7;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, param1 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
geo.spot1 = go.Spot.TopLeft;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("MicroformProcessing", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.25;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, param1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, (1 - param1) * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("MicroformRecording", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0.25 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.15 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.85 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0.75 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
geo.spot1 = new go.Spot(0, 0.25);
|
|
geo.spot2 = new go.Spot(1, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("MultiDocument", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
h = h / 0.8;
|
|
var fig = new go.PathFigure(w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.9 * w, 0.44 * h, 0.96 * w, 0.47 * h, 0.93 * w, 0.45 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.8 * w, 0.54 * h, 0.86 * w, 0.57 * h, 0.83 * w, 0.55 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.7 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0, 0.7 * h, 0.4 * w, 0.4 * h, 0.4 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0.1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0).close());
|
|
var fig2 = new go.PathFigure(0.1 * w, 0.2 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.2 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.54 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.2 * w, 0.1 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.1 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.44 * h));
|
|
geo.spot1 = new go.Spot(0, 0.25);
|
|
geo.spot2 = new go.Spot(0.8, 0.77);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("MultiProcess", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.1 * w, 0.1 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0.2 * h).close());
|
|
var fig2 = new go.PathFigure(0.2 * w, 0.1 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.1 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.8 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.1 * w, 0.2 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.2 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.9 * h));
|
|
geo.spot1 = new go.Spot(0, 0.2);
|
|
geo.spot2 = new go.Spot(0.8, 1);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("OfflineStorage", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.1;
|
|
var l = 1 - param1;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h).close());
|
|
var fig2 = new go.PathFigure(0.5 * param1 * w, param1 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, (1 - 0.5 * param1) * w, param1 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("OffPageConnector", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
geo.spot1 = go.Spot.TopLeft;
|
|
geo.spot2 = new go.Spot(0.75, 1);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Or", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpOffset = KAPPA * 0.5;
|
|
var radius = 0.5;
|
|
var fig = new go.PathFigure(w, radius * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
radius * w,
|
|
h,
|
|
w,
|
|
(radius + cpOffset) * h,
|
|
(radius + cpOffset) * w,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
radius * h,
|
|
(radius - cpOffset) * w,
|
|
h,
|
|
0,
|
|
(radius + cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
radius * w,
|
|
0,
|
|
0,
|
|
(radius - cpOffset) * h,
|
|
(radius - cpOffset) * w,
|
|
0
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
radius * h,
|
|
(radius + cpOffset) * w,
|
|
0,
|
|
w,
|
|
(radius - cpOffset) * h
|
|
));
|
|
var fig2 = new go.PathFigure(w, 0.5 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("PaperTape", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
h = h / 0.8;
|
|
var fig = new go.PathFigure(0, 0.7 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.3 * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
0.3 * h,
|
|
0.5 * w,
|
|
0.6 * h,
|
|
0.5 * w,
|
|
0
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.7 * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0.7 * h,
|
|
0.5 * w,
|
|
0.4 * h,
|
|
0.5 * w,
|
|
h
|
|
).close());
|
|
geo.spot1 = new go.Spot(0, 0.49);
|
|
geo.spot2 = new go.Spot(1, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("PrimitiveFromCall", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
var param2 = shape ? shape.parameter2 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.1;
|
|
if (isNaN(param2))
|
|
param2 = 0.3;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, (1 - param2) * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("PrimitiveToCall", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
var param2 = shape ? shape.parameter2 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.1;
|
|
if (isNaN(param2))
|
|
param2 = 0.3;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, (1 - param2) * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, (1 - param2) * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Procedure", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.1;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
var fig2 = new go.PathFigure((1 - param1) * w, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, (1 - param1) * w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, param1 * w, 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, param1 * w, h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Process", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.1;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
var fig2 = new go.PathFigure(param1 * w, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, param1 * w, h));
|
|
geo.spot2 = go.Spot.BottomRight;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Sort", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.5 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h).close());
|
|
var fig2 = new go.PathFigure(0, 0.5 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
geo.spot1 = new go.Spot(0.25, 0.25);
|
|
geo.spot2 = new go.Spot(0.75, 0.5);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Start", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.25;
|
|
var fig = new go.PathFigure(param1 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 270, 180, 0.75 * w, 0.5 * h, 0.25 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 90, 180, 0.25 * w, 0.5 * h, 0.25 * w, 0.5 * h));
|
|
var fig2 = new go.PathFigure(param1 * w, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, param1 * w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, (1 - param1) * w, 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, (1 - param1) * w, h));
|
|
geo.spot1 = new go.Spot(param1, 0);
|
|
geo.spot2 = new go.Spot(1 - param1, 1);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Terminator", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.25 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 270, 180, 0.75 * w, 0.5 * h, 0.25 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 90, 180, 0.25 * w, 0.5 * h, 0.25 * w, 0.5 * h));
|
|
geo.spot1 = new go.Spot(0.23, 0);
|
|
geo.spot2 = new go.Spot(0.77, 1);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("TransmittalTape", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1))
|
|
param1 = 0.1;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, (1 - param1) * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, (1 - param1) * h).close());
|
|
geo.spot1 = go.Spot.TopLeft;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("AndGate", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpOffset = KAPPA * 0.5;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
0.5 * h,
|
|
(0.5 + cpOffset) * w,
|
|
0,
|
|
w,
|
|
(0.5 - cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
h,
|
|
w,
|
|
(0.5 + cpOffset) * h,
|
|
(0.5 + cpOffset) * w,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
geo.spot1 = go.Spot.TopLeft;
|
|
geo.spot2 = new go.Spot(0.55, 1);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Buffer", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
geo.spot1 = new go.Spot(0, 0.25);
|
|
geo.spot2 = new go.Spot(0.5, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Clock", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpOffset = KAPPA * 0.5;
|
|
var radius = 0.5;
|
|
var fig = new go.PathFigure(w, radius * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
radius * w,
|
|
h,
|
|
w,
|
|
(radius + cpOffset) * h,
|
|
(radius + cpOffset) * w,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
radius * h,
|
|
(radius - cpOffset) * w,
|
|
h,
|
|
0,
|
|
(radius + cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
radius * w,
|
|
0,
|
|
0,
|
|
(radius - cpOffset) * h,
|
|
(radius - cpOffset) * w,
|
|
0
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
radius * h,
|
|
(radius + cpOffset) * w,
|
|
0,
|
|
w,
|
|
(radius - cpOffset) * h
|
|
));
|
|
var fig2 = new go.PathFigure(w, radius * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, radius * h));
|
|
var fig3 = new go.PathFigure(0.8 * w, 0.75 * h, false);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.25 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0.25 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0.75 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0.75 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0.25 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.25 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.75 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Ground", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.5 * w, 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.4 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.2 * w, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.3 * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.4 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Inverter", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpOffset = KAPPA * 0.1;
|
|
var radius = 0.1;
|
|
var centerx = 0.9;
|
|
var centery = 0.5;
|
|
var fig = new go.PathFigure(0.8 * w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.5 * h));
|
|
var fig2 = new go.PathFigure((centerx + radius) * w, centery * h, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
geo.spot1 = new go.Spot(0, 0.25);
|
|
geo.spot2 = new go.Spot(0.4, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("NandGate", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpxOffset = KAPPA * 0.5;
|
|
var cpyOffset = KAPPA * 0.4;
|
|
var cpOffset = KAPPA * 0.1;
|
|
var radius = 0.1;
|
|
var centerx = 0.9;
|
|
var centery = 0.5;
|
|
var fig = new go.PathFigure(0.8 * w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.4 * w,
|
|
h,
|
|
0.8 * w,
|
|
(0.5 + cpyOffset) * h,
|
|
(0.4 + cpxOffset) * w,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.8 * w,
|
|
0.5 * h,
|
|
(0.4 + cpxOffset) * w,
|
|
0,
|
|
0.8 * w,
|
|
(0.5 - cpyOffset) * h
|
|
));
|
|
var fig2 = new go.PathFigure((centerx + radius) * w, centery * h, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
geo.spot1 = new go.Spot(0, 0.05);
|
|
geo.spot2 = new go.Spot(0.55, 0.95);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("NorGate", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var radius = 0.5;
|
|
var cpOffset = KAPPA * radius;
|
|
var centerx = 0;
|
|
var centery = 0.5;
|
|
var fig = new go.PathFigure(0.8 * w, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
h,
|
|
0.7 * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
0,
|
|
0.25 * w,
|
|
0.75 * h,
|
|
0.25 * w,
|
|
0.25 * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.8 * w,
|
|
0.5 * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
0.7 * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
radius = 0.1;
|
|
cpOffset = KAPPA * 0.1;
|
|
centerx = 0.9;
|
|
centery = 0.5;
|
|
var fig2 = new go.PathFigure((centerx - radius) * w, centery * h, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
geo.spot1 = new go.Spot(0.2, 0.25);
|
|
geo.spot2 = new go.Spot(0.6, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("OrGate", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var radius = 0.5;
|
|
var cpOffset = KAPPA * radius;
|
|
var centerx = 0;
|
|
var centery = 0.5;
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
0.5 * h,
|
|
(centerx + cpOffset + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
0.8 * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
h,
|
|
0.8 * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0, 0, 0.25 * w, 0.75 * h, 0.25 * w, 0.25 * h).close());
|
|
geo.spot1 = new go.Spot(0.2, 0.25);
|
|
geo.spot2 = new go.Spot(0.75, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("XnorGate", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var radius = 0.5;
|
|
var cpOffset = KAPPA * radius;
|
|
var centerx = 0.2;
|
|
var centery = 0.5;
|
|
var fig = new go.PathFigure(0.1 * w, 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.1 * w, h, 0.35 * w, 0.25 * h, 0.35 * w, 0.75 * h));
|
|
var fig2 = new go.PathFigure(0.8 * w, 0.5 * h, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.2 * w,
|
|
h,
|
|
0.7 * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Bezier, 0.2 * w, 0, 0.45 * w, 0.75 * h, 0.45 * w, 0.25 * h));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.8 * w,
|
|
0.5 * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
0.7 * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
radius = 0.1;
|
|
cpOffset = KAPPA * 0.1;
|
|
centerx = 0.9;
|
|
centery = 0.5;
|
|
var fig3 = new go.PathFigure((centerx - radius) * w, centery * h, true);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
geo.spot1 = new go.Spot(0.4, 0.25);
|
|
geo.spot2 = new go.Spot(0.65, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("XorGate", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var radius = 0.5;
|
|
var cpOffset = KAPPA * radius;
|
|
var centerx = 0.2;
|
|
var centery = 0.5;
|
|
var fig = new go.PathFigure(0.1 * w, 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.1 * w, h, 0.35 * w, 0.25 * h, 0.35 * w, 0.75 * h));
|
|
var fig2 = new go.PathFigure(0.2 * w, 0, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
0.5 * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
0.9 * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.2 * w,
|
|
h,
|
|
0.9 * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Bezier, 0.2 * w, 0, 0.45 * w, 0.75 * h, 0.45 * w, 0.25 * h).close());
|
|
geo.spot1 = new go.Spot(0.4, 0.25);
|
|
geo.spot2 = new go.Spot(0.8, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Capacitor", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Resistor", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.5 * h, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0.5 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Inductor", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpOffset = KAPPA * 0.1;
|
|
var radius = 0.1;
|
|
var centerx = 0.1;
|
|
var centery = 0.5;
|
|
var fig = new go.PathFigure((centerx - cpOffset * 0.5) * w, h, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, (centerx + radius) * w, 0, (centerx - cpOffset) * w, h, (centerx - radius) * w, 0));
|
|
centerx = 0.3;
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, centerx * w, h, (centerx + radius) * w, 0, (centerx + cpOffset) * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, (centerx + radius) * w, 0, (centerx - cpOffset) * w, h, (centerx - radius) * w, 0));
|
|
centerx = 0.5;
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, centerx * w, h, (centerx + radius) * w, 0, (centerx + cpOffset) * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, (centerx + radius) * w, 0, (centerx - cpOffset) * w, h, (centerx - radius) * w, 0));
|
|
centerx = 0.7;
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, centerx * w, h, (centerx + radius) * w, 0, (centerx + cpOffset) * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, (centerx + radius) * w, 0, (centerx - cpOffset) * w, h, (centerx - radius) * w, 0));
|
|
centerx = 0.9;
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, (centerx + cpOffset * 0.5) * w, h, (centerx + radius) * w, 0, (centerx + cpOffset) * w, h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("ACvoltageSource", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpOffset = KAPPA * 0.5;
|
|
var radius = 0.5;
|
|
var centerx = 0.5;
|
|
var centery = 0.5;
|
|
var fig = new go.PathFigure((centerx - radius) * w, centery * h, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, (centerx - radius + 0.1) * w, centery * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius - 0.1) * w,
|
|
centery * h,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
centerx * w,
|
|
(centery + radius) * h
|
|
));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("DCvoltageSource", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.75 * h, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.25 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Diode", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
geo.spot1 = new go.Spot(0, 0.25);
|
|
geo.spot2 = new go.Spot(0.5, 0.75);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Wifi", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var origw = w;
|
|
var origh = h;
|
|
w = w * 0.38;
|
|
h = h * 0.6;
|
|
var cpOffset = KAPPA * 0.8;
|
|
var radius = 0.8;
|
|
var centerx = 0;
|
|
var centery = 0.5;
|
|
var xOffset = (origw - w) / 2;
|
|
var yOffset = (origh - h) / 2;
|
|
var fig = new go.PathFigure(centerx * w + xOffset, (centery + radius) * h + yOffset, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w + xOffset,
|
|
centery * h + yOffset,
|
|
(centerx - cpOffset) * w + xOffset,
|
|
(centery + radius) * h + yOffset,
|
|
(centerx - radius) * w + xOffset,
|
|
(centery + cpOffset) * h + yOffset
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w + xOffset,
|
|
(centery - radius) * h + yOffset,
|
|
(centerx - radius) * w + xOffset,
|
|
(centery - cpOffset) * h + yOffset,
|
|
(centerx - cpOffset) * w + xOffset,
|
|
(centery - radius) * h + yOffset
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius + cpOffset * 0.5) * w + xOffset,
|
|
centery * h + yOffset,
|
|
centerx * w + xOffset,
|
|
(centery - radius) * h + yOffset,
|
|
(centerx - radius + cpOffset * 0.5) * w + xOffset,
|
|
(centery - cpOffset) * h + yOffset
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w + xOffset,
|
|
(centery + radius) * h + yOffset,
|
|
(centerx - radius + cpOffset * 0.5) * w + xOffset,
|
|
(centery + cpOffset) * h + yOffset,
|
|
centerx * w + xOffset,
|
|
(centery + radius) * h + yOffset
|
|
).close());
|
|
cpOffset = KAPPA * 0.4;
|
|
radius = 0.4;
|
|
centerx = 0.2;
|
|
centery = 0.5;
|
|
var fig2 = new go.PathFigure(centerx * w + xOffset, (centery + radius) * h + yOffset, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w + xOffset,
|
|
centery * h + yOffset,
|
|
(centerx - cpOffset) * w + xOffset,
|
|
(centery + radius) * h + yOffset,
|
|
(centerx - radius) * w + xOffset,
|
|
(centery + cpOffset) * h + yOffset
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w + xOffset,
|
|
(centery - radius) * h + yOffset,
|
|
(centerx - radius) * w + xOffset,
|
|
(centery - cpOffset) * h + yOffset,
|
|
(centerx - cpOffset) * w + xOffset,
|
|
(centery - radius) * h + yOffset
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius + cpOffset * 0.5) * w + xOffset,
|
|
centery * h + yOffset,
|
|
centerx * w + xOffset,
|
|
(centery - radius) * h + yOffset,
|
|
(centerx - radius + cpOffset * 0.5) * w + xOffset,
|
|
(centery - cpOffset) * h + yOffset
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w + xOffset,
|
|
(centery + radius) * h + yOffset,
|
|
(centerx - radius + cpOffset * 0.5) * w + xOffset,
|
|
(centery + cpOffset) * h + yOffset,
|
|
centerx * w + xOffset,
|
|
(centery + radius) * h + yOffset
|
|
).close());
|
|
cpOffset = KAPPA * 0.2;
|
|
radius = 0.2;
|
|
centerx = 0.5;
|
|
centery = 0.5;
|
|
var fig3 = new go.PathFigure((centerx - radius) * w + xOffset, centery * h + yOffset, true);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w + xOffset,
|
|
(centery - radius) * h + yOffset,
|
|
(centerx - radius) * w + xOffset,
|
|
(centery - cpOffset) * h + yOffset,
|
|
(centerx - cpOffset) * w + xOffset,
|
|
(centery - radius) * h + yOffset
|
|
));
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w + xOffset,
|
|
centery * h + yOffset,
|
|
(centerx + cpOffset) * w + xOffset,
|
|
(centery - radius) * h + yOffset,
|
|
(centerx + radius) * w + xOffset,
|
|
(centery - cpOffset) * h + yOffset
|
|
));
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w + xOffset,
|
|
(centery + radius) * h + yOffset,
|
|
(centerx + radius) * w + xOffset,
|
|
(centery + cpOffset) * h + yOffset,
|
|
(centerx + cpOffset) * w + xOffset,
|
|
(centery + radius) * h + yOffset
|
|
));
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w + xOffset,
|
|
centery * h + yOffset,
|
|
(centerx - cpOffset) * w + xOffset,
|
|
(centery + radius) * h + yOffset,
|
|
(centerx - radius) * w + xOffset,
|
|
(centery + cpOffset) * h + yOffset
|
|
));
|
|
cpOffset = KAPPA * 0.4;
|
|
radius = 0.4;
|
|
centerx = 0.8;
|
|
centery = 0.5;
|
|
var fig4 = new go.PathFigure(centerx * w + xOffset, (centery - radius) * h + yOffset, true);
|
|
geo.add(fig4);
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w + xOffset,
|
|
centery * h + yOffset,
|
|
(centerx + cpOffset) * w + xOffset,
|
|
(centery - radius) * h + yOffset,
|
|
(centerx + radius) * w + xOffset,
|
|
(centery - cpOffset) * h + yOffset
|
|
));
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w + xOffset,
|
|
(centery + radius) * h + yOffset,
|
|
(centerx + radius) * w + xOffset,
|
|
(centery + cpOffset) * h + yOffset,
|
|
(centerx + cpOffset) * w + xOffset,
|
|
(centery + radius) * h + yOffset
|
|
));
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius - cpOffset * 0.5) * w + xOffset,
|
|
centery * h + yOffset,
|
|
centerx * w + xOffset,
|
|
(centery + radius) * h + yOffset,
|
|
(centerx + radius - cpOffset * 0.5) * w + xOffset,
|
|
(centery + cpOffset) * h + yOffset
|
|
));
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w + xOffset,
|
|
(centery - radius) * h + yOffset,
|
|
(centerx + radius - cpOffset * 0.5) * w + xOffset,
|
|
(centery - cpOffset) * h + yOffset,
|
|
centerx * w + xOffset,
|
|
(centery - radius) * h + yOffset
|
|
).close());
|
|
cpOffset = KAPPA * 0.8;
|
|
radius = 0.8;
|
|
centerx = 1;
|
|
centery = 0.5;
|
|
var fig5 = new go.PathFigure(centerx * w + xOffset, (centery - radius) * h + yOffset, true);
|
|
geo.add(fig5);
|
|
fig5.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w + xOffset,
|
|
centery * h + yOffset,
|
|
(centerx + cpOffset) * w + xOffset,
|
|
(centery - radius) * h + yOffset,
|
|
(centerx + radius) * w + xOffset,
|
|
(centery - cpOffset) * h + yOffset
|
|
));
|
|
fig5.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w + xOffset,
|
|
(centery + radius) * h + yOffset,
|
|
(centerx + radius) * w + xOffset,
|
|
(centery + cpOffset) * h + yOffset,
|
|
(centerx + cpOffset) * w + xOffset,
|
|
(centery + radius) * h + yOffset
|
|
));
|
|
fig5.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius - cpOffset * 0.5) * w + xOffset,
|
|
centery * h + yOffset,
|
|
centerx * w + xOffset,
|
|
(centery + radius) * h + yOffset,
|
|
(centerx + radius - cpOffset * 0.5) * w + xOffset,
|
|
(centery + cpOffset) * h + yOffset
|
|
));
|
|
fig5.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w + xOffset,
|
|
(centery - radius) * h + yOffset,
|
|
(centerx + radius - cpOffset * 0.5) * w + xOffset,
|
|
(centery - cpOffset) * h + yOffset,
|
|
centerx * w + xOffset,
|
|
(centery - radius) * h + yOffset
|
|
).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Email", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0).close());
|
|
var fig2 = new go.PathFigure(0, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.6 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.45 * w, 0.54 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.55 * w, 0.54 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Ethernet", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.35 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.65 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.65 * w, 0.4 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.35 * w, 0.4 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.35 * w, 0).close());
|
|
var fig2 = new go.PathFigure(0.1 * w, h, true, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0.6 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0.6 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, h).close());
|
|
var fig3 = new go.PathFigure(0.6 * w, h, true, true);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.6 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0.6 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, h).close());
|
|
var fig4 = new go.PathFigure(0, 0.5 * h, false);
|
|
geo.add(fig4);
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0.5 * h));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.4 * h));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Move, 0.75 * w, 0.5 * h));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0.6 * h));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Move, 0.25 * w, 0.5 * h));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, 0.25 * w, 0.6 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Power", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var cpOffset = KAPPA * 0.4;
|
|
var radius = 0.4;
|
|
var centerx = 0.5;
|
|
var centery = 0.5;
|
|
var unused = tempPoint();
|
|
var mid = tempPoint();
|
|
var c1 = tempPoint();
|
|
var c2 = tempPoint();
|
|
breakUpBezier(
|
|
centerx,
|
|
centery - radius,
|
|
centerx + cpOffset,
|
|
centery - radius,
|
|
centerx + radius,
|
|
centery - cpOffset,
|
|
centerx + radius,
|
|
centery,
|
|
0.5,
|
|
unused,
|
|
unused,
|
|
mid,
|
|
c1,
|
|
c2
|
|
);
|
|
var start = tempPointAt(mid.x, mid.y);
|
|
var fig = new go.PathFigure(mid.x * w, mid.y * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, (centerx + radius) * w, centery * h, c1.x * w, c1.y * h, c2.x * w, c2.y * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
breakUpBezier(
|
|
centerx - radius,
|
|
centery,
|
|
centerx - radius,
|
|
centery - cpOffset,
|
|
centerx - cpOffset,
|
|
centery - radius,
|
|
centerx,
|
|
centery - radius,
|
|
0.5,
|
|
c1,
|
|
c2,
|
|
mid,
|
|
unused,
|
|
unused
|
|
);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
mid.x * w,
|
|
mid.y * h,
|
|
c1.x * w,
|
|
c1.y * h,
|
|
c2.x * w,
|
|
c2.y * h
|
|
));
|
|
cpOffset = KAPPA * 0.3;
|
|
radius = 0.3;
|
|
breakUpBezier(
|
|
centerx - radius,
|
|
centery,
|
|
centerx - radius,
|
|
centery - cpOffset,
|
|
centerx - cpOffset,
|
|
centery - radius,
|
|
centerx,
|
|
centery - radius,
|
|
0.5,
|
|
c1,
|
|
c2,
|
|
mid,
|
|
unused,
|
|
unused
|
|
);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, mid.x * w, mid.y * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, (centerx - radius) * w, centery * h, c2.x * w, c2.y * h, c1.x * w, c1.y * h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
breakUpBezier(
|
|
centerx,
|
|
centery - radius,
|
|
centerx + cpOffset,
|
|
centery - radius,
|
|
centerx + radius,
|
|
centery - cpOffset,
|
|
centerx + radius,
|
|
centery,
|
|
0.5,
|
|
unused,
|
|
unused,
|
|
mid,
|
|
c1,
|
|
c2
|
|
);
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, mid.x * w, mid.y * h, c2.x * w, c2.y * h, c1.x * w, c1.y * h).close());
|
|
var fig = new go.PathFigure(0.45 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.45 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.55 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.55 * w, 0).close());
|
|
freePoint(unused);
|
|
freePoint(mid);
|
|
freePoint(c1);
|
|
freePoint(c2);
|
|
freePoint(start);
|
|
geo.spot1 = new go.Spot(0.25, 0.45);
|
|
geo.spot2 = new go.Spot(0.75, 0.8);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Fallout", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, h / 2, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 180, 360, w / 2, h / 2, w / 2, h / 2));
|
|
function drawTriangle(fig2, offsetx, offsety) {
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, (0.3 + offsetx) * w, (0.8 + offsety) * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, (0.5 + offsetx) * w, (0.5 + offsety) * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, (0.1 + offsetx) * w, (0.5 + offsety) * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, (0.3 + offsetx) * w, (0.8 + offsety) * h).close());
|
|
}
|
|
drawTriangle(fig, 0, 0);
|
|
drawTriangle(fig, 0.4, 0);
|
|
drawTriangle(fig, 0.2, -0.3);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("IrritationHazard", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.2 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.3 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.7 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.2 * h).close());
|
|
geo.spot1 = new go.Spot(0.3, 0.3);
|
|
geo.spot2 = new go.Spot(0.7, 0.7);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("ElectricalHazard", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.37 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.11 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.77 * w, 0.04 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.33 * w, 0.49 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.37 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.63 * w, 0.86 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.77 * w, 0.91 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.34 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.34 * w, 0.78 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.44 * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.65 * w, 0.56 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.68 * h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("FireHazard", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.1 * w, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.29 * w,
|
|
0,
|
|
-0.25 * w,
|
|
0.63 * h,
|
|
0.45 * w,
|
|
0.44 * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.51 * w,
|
|
0.42 * h,
|
|
0.48 * w,
|
|
0.17 * h,
|
|
0.54 * w,
|
|
0.35 * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.59 * w,
|
|
0.18 * h,
|
|
0.59 * w,
|
|
0.29 * h,
|
|
0.58 * w,
|
|
0.28 * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.75 * w,
|
|
0.6 * h,
|
|
0.8 * w,
|
|
0.34 * h,
|
|
0.88 * w,
|
|
0.43 * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.88 * w,
|
|
0.31 * h,
|
|
0.87 * w,
|
|
0.48 * h,
|
|
0.88 * w,
|
|
0.43 * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.9 * w,
|
|
h,
|
|
1.17 * w,
|
|
0.76 * h,
|
|
0.82 * w,
|
|
0.8 * h
|
|
).close());
|
|
geo.spot1 = new go.Spot(0.07, 0.445);
|
|
geo.spot2 = new go.Spot(0.884, 0.958);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("BpmnActivityLoop", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var r = 0.5;
|
|
var cx = 0;
|
|
var cy = 0;
|
|
var d = r * KAPPA;
|
|
var mx1 = 0.4 * Math.SQRT2 / 2 + 0.5;
|
|
var my1 = 0.5 - 0.5 * Math.SQRT2 / 2;
|
|
var x1 = 1;
|
|
var y1 = 0.5;
|
|
var x2 = 0.5;
|
|
var y2 = 0;
|
|
var fig = new go.PathFigure(mx1 * w, (1 - my1) * h, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
x1 * w,
|
|
y1 * h,
|
|
x1 * w,
|
|
0.7 * h,
|
|
x1 * w,
|
|
y1 * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(x2 + cx) * w,
|
|
(y2 + cx) * h,
|
|
(0.5 + r + cx) * w,
|
|
(0.5 - d + cx) * h,
|
|
(0.5 + d + cx) * w,
|
|
(0.5 - r + cx) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 + cy) * h,
|
|
(0.5 - d + cx) * w,
|
|
(0.5 - r + cy) * h,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 - d + cy) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(0.35 + cx) * w,
|
|
0.9 * h,
|
|
(0.5 - r + cx) * w,
|
|
(0.5 + d + cy) * h,
|
|
(0.5 - d + cx) * w,
|
|
0.9 * h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, (0.25 + cx) * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, (0.35 + cx) * w, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, (0.2 + cx) * w, 0.95 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("BpmnActivityParallel", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("BpmnActivitySequential", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("BpmnActivityAdHoc", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, false);
|
|
geo.add(fig);
|
|
var fig2 = new go.PathFigure(w, h, false);
|
|
geo.add(fig2);
|
|
var fig3 = new go.PathFigure(0, 0.5 * h, false);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.5 * w,
|
|
0.5 * h,
|
|
0.2 * w,
|
|
0.35 * h,
|
|
0.3 * w,
|
|
0.35 * h
|
|
));
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
0.5 * h,
|
|
0.7 * w,
|
|
0.65 * h,
|
|
0.8 * w,
|
|
0.65 * h
|
|
));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("BpmnActivityCompensation", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("BpmnTaskMessage", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.2 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.8 * h).close());
|
|
var fig = new go.PathFigure(0, 0.2 * h, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.2 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("BpmnTaskScript", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.7 * w, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, h));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.3 * w,
|
|
0,
|
|
0.6 * w,
|
|
0.5 * h,
|
|
0,
|
|
0.5 * h
|
|
));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.7 * w,
|
|
h,
|
|
0.4 * w,
|
|
0.5 * h,
|
|
w,
|
|
0.5 * h
|
|
).close());
|
|
var fig2 = new go.PathFigure(0.45 * w, 0.73 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0.73 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.38 * w, 0.5 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.63 * w, 0.5 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.31 * w, 0.27 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.56 * w, 0.27 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("BpmnTaskUser", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, false);
|
|
geo.add(fig);
|
|
var fig2 = new go.PathFigure(0.335 * w, (1 - 0.555) * h, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.335 * w, (1 - 0.405) * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, (1 - 0.335) * w, (1 - 0.405) * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, (1 - 0.335) * w, (1 - 0.555) * h));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
0.68 * h,
|
|
(1 - 0.12) * w,
|
|
0.46 * h,
|
|
(1 - 0.02) * w,
|
|
0.54 * h
|
|
));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, 0.68 * h));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0.335 * w,
|
|
(1 - 0.555) * h,
|
|
0.02 * w,
|
|
0.54 * h,
|
|
0.12 * w,
|
|
0.46 * h
|
|
));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.365 * w, (1 - 0.595) * h));
|
|
var radiushead = 0.5 - 0.285;
|
|
var centerx = 0.5;
|
|
var centery = radiushead;
|
|
var alpha2 = Math.PI / 4;
|
|
var KAPPA2 = 4 * (1 - Math.cos(alpha2)) / (3 * Math.sin(alpha2));
|
|
var cpOffset = KAPPA2 * 0.5;
|
|
var radiusw = radiushead;
|
|
var radiush = radiushead;
|
|
var offsetw = KAPPA2 * radiusw;
|
|
var offseth = KAPPA2 * radiush;
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radiusw) * w,
|
|
centery * h,
|
|
(centerx - (offsetw + radiusw) / 2) * w,
|
|
(centery + (radiush + offseth) / 2) * h,
|
|
(centerx - radiusw) * w,
|
|
(centery + offseth) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radiush) * h,
|
|
(centerx - radiusw) * w,
|
|
(centery - offseth) * h,
|
|
(centerx - offsetw) * w,
|
|
(centery - radiush) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radiusw) * w,
|
|
centery * h,
|
|
(centerx + offsetw) * w,
|
|
(centery - radiush) * h,
|
|
(centerx + radiusw) * w,
|
|
(centery - offseth) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(1 - 0.365) * w,
|
|
(1 - 0.595) * h,
|
|
(centerx + radiusw) * w,
|
|
(centery + offseth) * h,
|
|
(centerx + (offsetw + radiusw) / 2) * w,
|
|
(centery + (radiush + offseth) / 2) * h
|
|
));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, (1 - 0.365) * w, (1 - 0.595) * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, (1 - 0.335) * w, (1 - 0.555) * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, (1 - 0.335) * w, (1 - 0.405) * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.335 * w, (1 - 0.405) * h));
|
|
var fig3 = new go.PathFigure(0.2 * w, h, false);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.8 * h));
|
|
var fig4 = new go.PathFigure(0.8 * w, h, false);
|
|
geo.add(fig4);
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.8 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("BpmnEventConditional", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.1 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, h).close());
|
|
var fig2 = new go.PathFigure(0.2 * w, 0.2 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.2 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.2 * w, 0.4 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.4 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.2 * w, 0.6 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.6 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.2 * w, 0.8 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.8 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("BpmnEventError", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.33 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.66 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.66 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.33 * w, 0.5 * h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("BpmnEventEscalation", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, false);
|
|
geo.add(fig);
|
|
var fig2 = new go.PathFigure(w, h, false);
|
|
geo.add(fig2);
|
|
var fig3 = new go.PathFigure(0.1 * w, h, true);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.5 * h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Caution", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.05 * w, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.1 * w, 0.8 * h, 0, h, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.45 * w, 0.1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.55 * w, 0.1 * h, 0.5 * w, 0, 0.5 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.95 * w, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.9 * w, h, w, h, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.05 * w, h));
|
|
var radius = 0.05;
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, (0.5 - radius) * w, 0.875 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 180, -360, 0.5 * w, 0.875 * h, radius * w, radius * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0.75 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, 0.325 * h, 0.575 * w, 0.725 * h, 0.625 * w, 0.375 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, 0.75 * h, 0.375 * w, 0.375 * h, 0.425 * w, 0.725 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Recycle", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.45 * w, 0.95 * h, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.95 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.185 * w, 0.85 * h, 0.17 * w, 0.95 * h, 0.15 * w, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.235 * w, 0.75 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.3 * w, 0.625 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.35 * w, 0.65 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.275 * w, 0.45 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.05 * w, 0.45 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.05 * w, 0.575 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.1875 * w, 0.95 * h, 0, 0.675 * h, 0, 0.7 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.45 * w, 0.95 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.45 * w, 0.775 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.22 * w, 0.775 * h));
|
|
var fig2 = new go.PathFigure(0.475 * w, 0.2 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0.4 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.225 * w, 0.3 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.275 * w, 0.175 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.325 * w, 0.05 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Bezier, 0.4 * w, 0.05 * h, 0.35 * w, 0, 0.375 * w, 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.575 * w, 0.375 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.525 * w, 0.4 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0.475 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.85 * w, 0.315 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.32 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.65 * w, 0.05 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Bezier, 0.575 * w, 0, 0.65 * w, 0.05 * h, 0.625 * w, 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.38 * w, 0.0105 * h));
|
|
var fig3 = new go.PathFigure(0.675 * w, 0.575 * h, false);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.875 * w, 0.525 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w, 0.775 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Bezier, 0.85 * w, 0.95 * h, w, 0.8 * h, w, 0.85 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.65 * w, 0.95 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.65 * w, h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.55 * w, 0.85 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.65 * w, 0.725 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.65 * w, 0.775 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0.775 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w, 0.775 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Move, 0.675 * w, 0.575 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.775 * w, 0.775 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("BpmnEventTimer", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var radius = 0.5;
|
|
var cpOffset = KAPPA * 0.5;
|
|
var fig = new go.PathFigure(w, radius * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
radius * w,
|
|
h,
|
|
w,
|
|
(radius + cpOffset) * h,
|
|
(radius + cpOffset) * w,
|
|
h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
0,
|
|
radius * h,
|
|
(radius - cpOffset) * w,
|
|
h,
|
|
0,
|
|
(radius + cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
radius * w,
|
|
0,
|
|
0,
|
|
(radius - cpOffset) * h,
|
|
(radius - cpOffset) * w,
|
|
0
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
w,
|
|
radius * h,
|
|
(radius + cpOffset) * w,
|
|
0,
|
|
w,
|
|
(radius - cpOffset) * h
|
|
));
|
|
var fig2 = new go.PathFigure(radius * w, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, radius * w, 0.15 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, radius * w, h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, radius * w, 0.85 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0, radius * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.15 * w, radius * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, w, radius * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.85 * w, radius * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, radius * w, radius * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.58 * w, 0.1 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, radius * w, radius * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.78 * w, 0.54 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Package", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.15 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.15 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
var fig2 = new go.PathFigure(0, 0.15 * h, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.65 * w, 0.15 * h).close());
|
|
geo.spot1 = new go.Spot(0, 0.1);
|
|
geo.spot2 = new go.Spot(1, 1);
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Class", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0).close());
|
|
var fig2 = new go.PathFigure(0, 0.2 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0.2 * h).close());
|
|
var fig3 = new go.PathFigure(0, 0.5 * h, false);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Component", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.15 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.15 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h).close());
|
|
var fig2 = new go.PathFigure(0, 0.2 * h, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.45 * w, 0.2 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.45 * w, 0.4 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, 0.4 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, 0.2 * h).close());
|
|
var fig3 = new go.PathFigure(0, 0.6 * h, true);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.45 * w, 0.6 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.45 * w, 0.8 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0, 0.8 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0, 0.6 * h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Boat Shipment", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.15 * w, 0.6 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.15 * w, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.15 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.85 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.85 * w, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.15 * w, 0.6 * h));
|
|
var fig2 = new go.PathFigure(0.15 * w, 0.6 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.85 * w, 0.6 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Customer/Supplier", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.66 * w, 0.33 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.66 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.33 * w, 0.33 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.33 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.33 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Workcell", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.65 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.65 * w, 0.4 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.35 * w, 0.4 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.35 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Supermarket", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.33 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.33 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, w, 0.33 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.66 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.66 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, w, 0.66 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("TruckShipment", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0).close());
|
|
var fig2 = new go.PathFigure(w, 0.8 * h, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0.4 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0.4 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0.8 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0.8 * h).close());
|
|
var radius = 0.1;
|
|
var cpOffset = KAPPA * 0.1;
|
|
var centerx = 0.2;
|
|
var centery = 0.9;
|
|
var fig3 = new go.PathFigure((centerx - radius) * w, centery * h, true);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig3.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
).close());
|
|
radius = 0.1;
|
|
cpOffset = KAPPA * 0.1;
|
|
centerx = 0.8;
|
|
centery = 0.9;
|
|
var fig4 = new go.PathFigure((centerx - radius) * w, centery * h, true);
|
|
geo.add(fig4);
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("KanbanPost", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.2 * w, 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Forklift", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
var fig2 = new go.PathFigure(0, 0.5 * h, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, 0.8 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.8 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.5 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h));
|
|
var fig3 = new go.PathFigure(0.5 * w, 0.8 * h, true);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.1 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.55 * w, 0.1 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.55 * w, 0.8 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.8 * h));
|
|
var fig4 = new go.PathFigure(0.5 * w, 0.7 * h, false);
|
|
geo.add(fig4);
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w, 0.7 * h));
|
|
var radius = 0.1;
|
|
var cpOffset = KAPPA * 0.1;
|
|
var centerx = 0.1;
|
|
var centery = 0.9;
|
|
var fig5 = new go.PathFigure((centerx - radius) * w, centery * h, true);
|
|
geo.add(fig5);
|
|
fig5.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig5.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig5.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig5.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
radius = 0.1;
|
|
cpOffset = KAPPA * 0.1;
|
|
centerx = 0.4;
|
|
centery = 0.9;
|
|
var fig6 = new go.PathFigure((centerx - radius) * w, centery * h, true);
|
|
geo.add(fig6);
|
|
fig6.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig6.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig6.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig6.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("RailShipment", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.1 * w, 0.4 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.45 * w, 0.4 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.45 * w, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0.9 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0.4 * h).close());
|
|
var fig2 = new go.PathFigure(0.45 * w, 0.7 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.55 * w, 0.7 * h));
|
|
var fig3 = new go.PathFigure(0.55 * w, 0.4 * h, true);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.4 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.9 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.55 * w, 0.9 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.55 * w, 0.4 * h).close());
|
|
var radius = 0.05;
|
|
var cpOffset = KAPPA * 0.05;
|
|
var centerx = 0.175;
|
|
var centery = 0.95;
|
|
var fig4 = new go.PathFigure((centerx - radius) * w, centery * h, true);
|
|
geo.add(fig4);
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
var radius = 0.05;
|
|
var cpOffset = KAPPA * 0.05;
|
|
var centerx = 0.375;
|
|
var centery = 0.95;
|
|
var fig5 = new go.PathFigure((centerx - radius) * w, centery * h, true);
|
|
geo.add(fig5);
|
|
fig5.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig5.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig5.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig5.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
var radius = 0.05;
|
|
var cpOffset = KAPPA * 0.05;
|
|
var centerx = 0.625;
|
|
var centery = 0.95;
|
|
var fig6 = new go.PathFigure((centerx - radius) * w, centery * h, true);
|
|
geo.add(fig6);
|
|
fig6.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig6.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig6.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig6.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
var radius = 0.05;
|
|
var cpOffset = KAPPA * 0.05;
|
|
var centerx = 0.825;
|
|
var centery = 0.95;
|
|
var fig7 = new go.PathFigure((centerx - radius) * w, centery * h, true);
|
|
geo.add(fig7);
|
|
fig7.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig7.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig7.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig7.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
).close());
|
|
var fig8 = new go.PathFigure(0, h, false);
|
|
geo.add(fig8);
|
|
fig8.add(new go.PathSegment(go.PathSegment.Line, w, h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Warehouse", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0).close());
|
|
var fig2 = new go.PathFigure(0, 0.2 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0.2 * h).close());
|
|
var fig3 = new go.PathFigure(0.15 * w, h, true);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.15 * w, 0.5 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0.5 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.15 * w, h).close());
|
|
var radius = 0.05;
|
|
var cpOffset = KAPPA * 0.05;
|
|
var centerx = 0.35;
|
|
var centery = 0.775;
|
|
var fig4 = new go.PathFigure((centerx - radius) * w, centery * h, true);
|
|
geo.add(fig4);
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig4.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
).close());
|
|
;
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("ControlCenter", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.1 * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.8 * h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Bluetooth", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.75 * h, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.75 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.25 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.75 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.25 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Bookmark", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.2 * w, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.2 * w, 0.4 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.4 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Bookmark", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.2 * w, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.2 * w, 0.4 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.4 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Globe", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.5 * w, 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, w, 0.5 * h, 0.75 * w, 0, w, 0.25 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, h, w, 0.75 * h, 0.75 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0, 0.5 * h, 0.25 * w, h, 0, 0.75 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, 0, 0, 0.25 * h, 0.25 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, h, 0.15 * w, 0.25 * h, 0.15 * w, 0.75 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, 0, 0.85 * w, 0.75 * h, 0.85 * w, 0.25 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.1675 * w, 0.15 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.8325 * w, 0.15 * h, 0.35 * w, 0.3 * h, 0.65 * w, 0.3 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.1675 * w, 0.85 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.8325 * w, 0.85 * h, 0.35 * w, 0.7 * h, 0.65 * w, 0.7 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Wave", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.25 * h, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.3 * w, 0.25 * h, 0.1 * w, 0, 0.2 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.7 * w, 0.25 * h, 0.425 * w, 0.5 * h, 0.575 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, w, 0.25 * h, 0.8 * w, 0, 0.9 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.75 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0, 0.25 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.75 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.3 * w, 0.75 * h, 0.1 * w, 0.5 * h, 0.2 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.7 * w, 0.75 * h, 0.425 * w, h, 0.575 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, w, 0.75 * h, 0.8 * w, 0.5 * h, 0.9 * w, 0.5 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Operator", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var radius = 0.3;
|
|
var cpOffset = KAPPA * 0.3;
|
|
var centerx = 0.5;
|
|
var centery = 0.7;
|
|
var fig = new go.PathFigure((centerx - radius) * w, centery * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
var fig2 = new go.PathFigure(0, 0.7 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Bezier, w, 0.7 * h, 0, 0, w, 0));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("TripleFanBlades", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.5 * w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, 0.65 * h, 0.65 * w, 0.3 * h, 0.65 * w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, 0, 0.35 * w, 0.5 * h, 0.35 * w, 0.3 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0.65 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0, h, 0.3 * w, 0.6 * h, 0.1 * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, 0.65 * h, 0.2 * w, h, 0.35 * w, 0.95 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0.65 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, w, h, 0.7 * w, 0.6 * h, 0.9 * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, 0.65 * h, 0.8 * w, h, 0.65 * w, 0.95 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("CentrifugalPump", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0, 0.5 * h, 0, 0.075 * h, 0, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.4 * w, h, 0, h, 0.4 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.8 * w, 0.4 * h, 0.8 * w, h, 0.85 * w, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.4 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Battery", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.4 * w, 0.1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0.1 * h));
|
|
var fig2 = new go.PathFigure(0, 0.6 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0, 0.4 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0.4 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Delete", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var radius = 0.5;
|
|
var cpOffset = KAPPA * 0.5;
|
|
var centerx = 0.5;
|
|
var centery = 0.5;
|
|
var fig = new go.PathFigure((centerx - radius) * w, centery * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
));
|
|
var fig2 = new go.PathFigure(0.15 * w, 0.5 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.85 * w, 0.5 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Flag", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.1 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0, 0.1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, 0.1 * h, 0.15 * w, 0, 0.35 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, w, 0.1 * h, 0.65 * w, 0.2 * h, 0.85 * w, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, 0.5 * h, 0.85 * w, 0.6 * h, 0.65 * w, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0, 0.5 * h, 0.35 * w, 0.4 * h, 0.15 * w, 0.4 * h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Help", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var radius = 0.5;
|
|
var cpOffset = KAPPA * 0.5;
|
|
var centerx = 0.5;
|
|
var centery = 0.5;
|
|
var fig = new go.PathFigure((centerx - radius) * w, centery * h, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
).close());
|
|
radius = 0.05;
|
|
cpOffset = KAPPA * 0.05;
|
|
centerx = 0.5;
|
|
centery = 0.8;
|
|
var fig2 = new go.PathFigure((centerx - radius) * w, centery * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery - radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery - cpOffset) * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery - radius) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx + radius) * w,
|
|
centery * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery - radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery - cpOffset) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
centerx * w,
|
|
(centery + radius) * h,
|
|
(centerx + radius) * w,
|
|
(centery + cpOffset) * h,
|
|
(centerx + cpOffset) * w,
|
|
(centery + radius) * h
|
|
));
|
|
fig2.add(new go.PathSegment(
|
|
go.PathSegment.Bezier,
|
|
(centerx - radius) * w,
|
|
centery * h,
|
|
(centerx - cpOffset) * w,
|
|
(centery + radius) * h,
|
|
(centerx - radius) * w,
|
|
(centery + cpOffset) * h
|
|
).close());
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0.7 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.5 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, 0.2 * h, 0.75 * w, 0.475 * h, 0.75 * w, 0.225 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Bezier, 0.3 * w, 0.35 * h, 0.4 * w, 0.2 * h, 0.3 * w, 0.25 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Location", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0.5 * w, h, true).add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0.5 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.5 * w, 0, 0.975 * w, 0.025 * h, 0.5 * w, 0)).add(new go.PathSegment(go.PathSegment.Bezier, 0.25 * w, 0.5 * h, 0.5 * w, 0, 0.025 * w, 0.025 * h).close()).add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0.2 * h)).add(new go.PathSegment(go.PathSegment.Arc, 270, 360, 0.5 * w, 0.3 * h, 0.1 * w, 0.1 * h).close()));
|
|
});
|
|
go.Shape.defineFigureGenerator("Lock", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h));
|
|
var fig2 = new go.PathFigure(0.2 * w, 0.5 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.2 * w, 0.5 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.3 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Bezier, 0.8 * w, 0.3 * h, 0.25 * w, 0, 0.75 * w, 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.5 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.3 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Unlocked", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.5 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.5 * h));
|
|
var fig2 = new go.PathFigure(0.2 * w, 0.5 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Move, 0.2 * w, 0.5 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.3 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Bezier, 0.8 * w, 0.3 * h, 0.25 * w, 0, 0.75 * w, 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.8 * w, 0.35 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Gear", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0.9375 * w, 0.56246875 * h, true).add(new go.PathSegment(go.PathSegment.Line, 0.9375 * w, 0.4375 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.80621875 * w, 0.4375 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.763 * w, 0.3316875 * h, 0.79840625 * w, 0.39915625 * h, 0.7834375 * w, 0.3635 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.8566875 * w, 0.23796875 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.76825 * w, 0.14959375 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.67596875 * w, 0.24184375 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.5625 * w, 0.19378125 * h, 0.64228125 * w, 0.2188125 * h, 0.603875 * w, 0.2021875 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.5625 * w, 0.0625 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.4375 * w, 0.0625 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.4375 * w, 0.19378125 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.32775 * w, 0.239375 * h, 0.39759375 * w, 0.20190625 * h, 0.36053125 * w, 0.2176875 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.2379375 * w, 0.14959375 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.14953125 * w, 0.2379375 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.23934375 * w, 0.3278125 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.19378125 * w, 0.4375 * h, 0.21765625 * w, 0.36059375 * h, 0.201875 * w, 0.397625 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.0625 * w, 0.4375 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.0625 * w, 0.5625 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.1938125 * w, 0.5625 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.241875 * w, 0.67596875 * h, 0.20221875 * w, 0.603875 * h, 0.21884375 * w, 0.64228125 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.1495625 * w, 0.76825 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.238 * w, 0.8566875 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.3316875 * w, 0.76296875 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.43753125 * w, 0.80621875 * h, 0.36353125 * w, 0.78340625 * h, 0.3991875 * w, 0.79840625 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.43753125 * w, 0.9375 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.5625 * w, 0.9375 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.5625 * w, 0.80621875 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.67225 * w, 0.760625 * h, 0.602375 * w, 0.79809375 * h, 0.63946875 * w, 0.78234375 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.76828125 * w, 0.8566875 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.85671875 * w, 0.76825 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.76065625 * w, 0.67221875 * h)).add(new go.PathSegment(go.PathSegment.Bezier, 0.80621875 * w, 0.56246875 * h, 0.78234375 * w, 0.63940625 * h, 0.798125 * w, 0.602375 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.9375 * w, 0.56246875 * h).close()).add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0.6 * h)).add(new go.PathSegment(go.PathSegment.Arc, 90, 360, 0.5 * w, 0.5 * h, 0.1 * w, 0.1 * h).close()));
|
|
});
|
|
go.Shape.defineFigureGenerator("Hand", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.5 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.1 * w, 0.3 * h, 0, 0.375 * h, 0.05 * w, 0.325 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.45 * w, 0.075 * h, 0.3 * w, 0.225 * h, 0.4 * w, 0.175 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.525 * w, 0.075 * h, 0.46 * w, 0.05 * h, 0.525 * w, 0.05 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.3 * w, 0.4 * h, 0.525 * w, 0.275 * h, 0.475 * w, 0.325 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.4 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.9 * w, 0.55 * h, w, 0.4 * h, w, 0.55 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.425 * w, 0.55 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0.55 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.6 * w, 0.7 * h, 0.675 * w, 0.55 * h, 0.675 * w, 0.7 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0.7 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.575 * w, 0.7 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.575 * w, 0.85 * h, 0.65 * w, 0.7 * h, 0.65 * w, 0.85 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0.85 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.525 * w, 0.85 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.535 * w, h, 0.61 * w, 0.85 * h, 0.61 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0, 0.9 * h, 0.435 * w, h, 0, h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Map", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0.2 * h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.25 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.25 * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h).close());
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.25 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.25 * w, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.5 * w, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.75 * w, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.75 * w, 0.8 * h));
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Eject", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h * 0.7));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h * 0.7).close());
|
|
var fig2 = new go.PathFigure(0, h * 0.6, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w, 0.6 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Pencil", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, true).add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.1 * h)).add(new go.PathSegment(go.PathSegment.Line, w, 0.9 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, h)).add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0.2 * h).close()));
|
|
});
|
|
go.Shape.defineFigureGenerator("Building", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w * 1, h * 1, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h * 0.85));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.046 * w, h * 0.85));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.046 * w, h * 0.45));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h * 0.45));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h * 0.3));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.046 * w, h * 0.3));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, (1 - 0.046) * w, h * 0.3));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h * 0.3));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h * 0.45));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, (1 - 0.046) * w, h * 0.45));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, (1 - 0.046) * w, h * 0.85));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h * 0.85).close());
|
|
var fig2 = new go.PathFigure(0.126 * w, 0.85 * h, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.126 * w, 0.45 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.322 * w, 0.45 * h));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, 0.322 * w, 0.85 * h).close());
|
|
var fig3 = new go.PathFigure(0.402 * w, 0.85 * h, false);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.402 * w, 0.45 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.598 * w, 0.45 * h));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, 0.598 * w, 0.85 * h).close());
|
|
var fig4 = new go.PathFigure(0.678 * w, 0.85 * h, false);
|
|
geo.add(fig4);
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, 0.678 * w, 0.45 * h));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, 0.874 * w, 0.45 * h));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, 0.874 * w, 0.85 * h).close());
|
|
var fig5 = new go.PathFigure(0.5 * w, 0.1 * h, false);
|
|
geo.add(fig5);
|
|
fig5.add(new go.PathSegment(go.PathSegment.Line, (0.046 + 0.15) * w, 0.3 * h));
|
|
fig5.add(new go.PathSegment(go.PathSegment.Line, (1 - (0.046 + 0.15)) * w, 0.3 * h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Staircase", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, h * 1, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.2, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.2, h * 0.8));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.4, h * 0.8));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.4, h * 0.6));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.6, h * 0.6));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.6, h * 0.4));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.8, h * 0.4));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.8, h * 0.2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 0.2));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 0.15));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.75, h * 0.15));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.75, h * 0.35));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.55, h * 0.35));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.55, h * 0.55));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.35, h * 0.55));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.35, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.15, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.15, h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h * 0.95).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("5Bars", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, h * 1, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.184, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.184, h * (1 - 0.184)).close());
|
|
var fig3 = new go.PathFigure(w * 0.204, h, true);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * 0.204, h * (1 - 0.184)));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * 0.388, h * (1 - 0.184 * 2)));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * 0.388, h * 1).close());
|
|
var fig4 = new go.PathFigure(w * 0.408, h, true);
|
|
geo.add(fig4);
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w * 0.408, h * (1 - 0.184 * 2)));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w * 0.592, h * (1 - 0.184 * 3)));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w * 0.592, h * 1).close());
|
|
var fig5 = new go.PathFigure(w * 0.612, h, true);
|
|
geo.add(fig5);
|
|
fig5.add(new go.PathSegment(go.PathSegment.Line, w * 0.612, h * (1 - 0.184 * 3)));
|
|
fig5.add(new go.PathSegment(go.PathSegment.Line, w * 0.796, h * (1 - 0.184 * 4)));
|
|
fig5.add(new go.PathSegment(go.PathSegment.Line, w * 0.796, h * 1).close());
|
|
var fig6 = new go.PathFigure(w * 0.816, h, true);
|
|
geo.add(fig6);
|
|
fig6.add(new go.PathSegment(go.PathSegment.Line, w * 0.816, h * (1 - 0.184 * 4)));
|
|
fig6.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * (1 - 0.184 * 5)));
|
|
fig6.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 1).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("PC", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.3, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.3, 0).close());
|
|
var fig2 = new go.PathFigure(w * 0.055, 0.07 * h, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.245, h * 0.07));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.245, h * 0.1));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.055, h * 0.1).close());
|
|
var fig3 = new go.PathFigure(w * 0.055, 0.13 * h, true);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * 0.245, h * 0.13));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * 0.245, h * 0.16));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * 0.055, h * 0.16).close());
|
|
var fig4 = new go.PathFigure(w * 0.055, 0.18 * h, true);
|
|
geo.add(fig4);
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w * 0.245, h * 0.18));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w * 0.245, h * 0.21));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w * 0.055, h * 0.21).close());
|
|
var fig5 = new go.PathFigure(w * 1, 0, true);
|
|
geo.add(fig5);
|
|
fig5.add(new go.PathSegment(go.PathSegment.Line, w * 0.4, 0));
|
|
fig5.add(new go.PathSegment(go.PathSegment.Line, w * 0.4, h * 0.65));
|
|
fig5.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 0.65).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Plane", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0.55 * w, h, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0.7 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0.475 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.35 * w, 0.525 * h, 0, 0.4 * h, 0.225 * w, 0.45 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0.475 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.15 * w, 0.35 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.325 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0.325 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.85 * w, 0.1 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0.9 * w, 0.2 * h, 0.975 * w, 0, w, 0.08 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0.45 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.6 * w, 0.95 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0.55 * w, h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Key", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w * 1, h * 0.5, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.9, 0.4 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.5, 0.4 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.5, 0.35 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.45, 0.35 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.3, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.15, 0.2 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.35 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, 0.65 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.15, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.3, 0.8 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.45, 0.65 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.5, 0.65 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.5, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.6, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.65, 0.55 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.7, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.75, 0.55 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.8, 0.6 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.85, 0.575 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.9, 0.6 * h).close());
|
|
fig.add(new go.PathSegment(go.PathSegment.Move, 0.17 * w, 0.425 * h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 270, 360, 0.17 * w, 0.5 * h, 0.075 * w, 0.075 * h).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("FilmTape", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(0, 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Arc, 270, 180, w * 0, w * 0.3, w * 0.055));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.08, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.08, h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 1), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 1), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 2), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 2), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 3), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 3), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 4), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 4), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 5), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 5), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 6), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 6), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 7), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 7), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 8), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 8), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 9), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 9), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 10), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 10), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 11), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 11), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 12), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 12), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 13), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 13), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 14), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 14), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 15), h * 0.95));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (0.08 + 0.056 * 15), h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 1));
|
|
var fig2 = new go.PathFigure(0, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Arc, 270, -180, w * 1, w * 0.3, w * 0.055));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 1));
|
|
var fig3 = new go.PathFigure(w * 0.11, h * 0.1, false);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * (0.11 + 0.24133333 * 1 + 0.028 * 0), h * 0.1));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * (0.11 + 0.24133333 * 1 + 0.028 * 0), h * 0.8));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * 0.11, h * 0.8).close());
|
|
var fig4 = new go.PathFigure(w * (0.11 + 0.24133333 * 1 + 0.028 * 1), h * 0.1, false);
|
|
geo.add(fig4);
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w * (0.11 + 0.24133333 * 2 + 0.028 * 1), h * 0.1));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w * (0.11 + 0.24133333 * 2 + 0.028 * 1), h * 0.8));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w * (0.11 + 0.24133333 * 1 + 0.028 * 1), h * 0.8).close());
|
|
var fig5 = new go.PathFigure(w * (0.11 + 0.24133333 * 2 + 0.028 * 2), h * 0.1, false);
|
|
geo.add(fig5);
|
|
fig5.add(new go.PathSegment(go.PathSegment.Line, w * (0.11 + 0.24133333 * 3 + 0.028 * 2), h * 0.1));
|
|
fig5.add(new go.PathSegment(go.PathSegment.Line, w * (0.11 + 0.24133333 * 3 + 0.028 * 2), h * 0.8));
|
|
fig5.add(new go.PathSegment(go.PathSegment.Line, w * (0.11 + 0.24133333 * 2 + 0.028 * 2), h * 0.8).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("FloppyDisk", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var roundValue = 8;
|
|
var cpOffset = roundValue * KAPPA;
|
|
var fig = new go.PathFigure(roundValue, 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.86, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 0.14));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h - roundValue));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, w - roundValue, h, w, h - cpOffset, w - cpOffset, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, roundValue, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0, h - roundValue, cpOffset, h, 0, h - cpOffset));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, roundValue));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, roundValue, 0, 0, cpOffset, cpOffset, 0).close());
|
|
var fig2 = new go.PathFigure(w * 0.83, 0, false);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.83, h * 0.3));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.17, h * 0.3));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.17, h * 0).close());
|
|
var fig3 = new go.PathFigure(w * 0.83, h * 1, false);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * 0.83, h * 0.5));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * 0.17, h * 0.5));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * 0.17, h * 1).close());
|
|
var fig4 = new go.PathFigure(w * 0.78, h * 0.05, false);
|
|
geo.add(fig4);
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w * 0.66, h * 0.05));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w * 0.66, h * 0.25));
|
|
fig4.add(new go.PathSegment(go.PathSegment.Line, w * 0.78, h * 0.25).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("SpeechBubble", function(shape, w, h) {
|
|
var param1 = shape ? shape.parameter1 : NaN;
|
|
if (isNaN(param1) || param1 < 0)
|
|
param1 = 15;
|
|
param1 = Math.min(param1, w / 3);
|
|
param1 = Math.min(param1, h / 3);
|
|
var cpOffset = param1 * KAPPA;
|
|
var bubbleH = h * 0.8;
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(param1, 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w - param1, 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, w, param1, w - cpOffset, 0, w, cpOffset));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, bubbleH - param1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, w - param1, bubbleH, w, bubbleH - cpOffset, w - cpOffset, bubbleH));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.7, bubbleH));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.7, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.55, bubbleH));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, param1, bubbleH));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0, bubbleH - param1, cpOffset, bubbleH, 0, bubbleH - cpOffset));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, 0, param1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, param1, 0, 0, cpOffset, cpOffset, 0).close());
|
|
if (cpOffset > 1) {
|
|
geo.spot1 = new go.Spot(0, 0, cpOffset, cpOffset);
|
|
geo.spot2 = new go.Spot(1, 0.8, -cpOffset, -cpOffset);
|
|
} else {
|
|
geo.spot1 = go.Spot.TopLeft;
|
|
geo.spot2 = new go.Spot(1, 0.8);
|
|
}
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Repeat", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w * 0, h * 0.45, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.25, h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.5, h * 0.45));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.3, h * 0.45));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.3, h * 0.9));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.6, h * 0.9));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.65, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.2, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.2, h * 0.45).close());
|
|
var fig2 = new go.PathFigure(w * 1, h * 0.55, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.75, h * 1));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.5, h * 0.55));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.7, h * 0.55));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.7, h * 0.1));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.4, h * 0.1));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.35, h * 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.8, h * 0));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.8, h * 0.55).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Windows", function(shape, w, h) {
|
|
return new go.Geometry().add(new go.PathFigure(0, 0, true).add(new go.PathSegment(go.PathSegment.Line, w, 0)).add(new go.PathSegment(go.PathSegment.Line, w, h)).add(new go.PathSegment(go.PathSegment.Line, 0, h).close()).add(new go.PathSegment(go.PathSegment.Move, 0.4 * w, 0.4 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.4 * w, 0.8 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.8 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.9 * w, 0.4 * h).close()).add(new go.PathSegment(go.PathSegment.Move, 0.2 * w, 0.1 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.2 * w, 0.6 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0.6 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.7 * w, 0.1 * h).close()).add(new go.PathSegment(go.PathSegment.Move, 0.1 * w, 0.6 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.1 * w, 0.9 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.9 * h)).add(new go.PathSegment(go.PathSegment.Line, 0.5 * w, 0.6 * h).close()));
|
|
});
|
|
go.Shape.defineFigureGenerator("Terminal", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w * 0, h * 0.1, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 0.1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 0.9));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0, h * 0.9).close());
|
|
var fig2 = new go.PathFigure(w * 0.1, h * 0.2, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.1, h * 0.25));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.22, h * 0.285));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.1, h * 0.32));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.1, h * 0.37));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.275, h * 0.32));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.275, h * 0.25).close());
|
|
var fig3 = new go.PathFigure(w * 0.28, h * 0.37, true);
|
|
geo.add(fig3);
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * 0.45, h * 0.37));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * 0.45, h * 0.41));
|
|
fig3.add(new go.PathSegment(go.PathSegment.Line, w * 0.28, h * 0.41).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Beaker", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var param1 = 15;
|
|
var cpOffset = param1 * KAPPA;
|
|
var fig = new go.PathFigure(w * 0.62, h * 0.475, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w, h - param1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, w - param1, h, w, h - cpOffset, w - cpOffset, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, param1, h));
|
|
fig.add(new go.PathSegment(go.PathSegment.Bezier, 0, h - param1, cpOffset, h, 0, h - cpOffset));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.38, h * 0.475));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.38, h * 0.03));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.36, h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.64, h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.62, h * 0.03).close());
|
|
if (cpOffset > 1) {
|
|
geo.spot1 = new go.Spot(0, 0, cpOffset, cpOffset);
|
|
geo.spot2 = new go.Spot(1, 1, -cpOffset, -cpOffset);
|
|
} else {
|
|
geo.spot1 = go.Spot.TopLeft;
|
|
geo.spot2 = go.Spot.BottomRight;
|
|
}
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Download", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w * 0, h * 1, true);
|
|
geo.add(fig);
|
|
var third = 0.1 / 0.3;
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.8, h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.66, h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.66, h * 0.055));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.755, h * 0.055));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.93, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.64, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.61, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.5, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.39, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.36, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.07, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (1 - 0.755), h * 0.055));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (1 - 0.66), h * 0.055));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (1 - 0.66), h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (1 - 0.8), h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0, h * (1 - third)).close());
|
|
var fig2 = new go.PathFigure(w * 0.4, h * 0, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.4, h * 0.44));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.26, h * 0.44));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.5, h * 0.66));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * (1 - 0.26), h * 0.44));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.6, h * 0.44));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.6, h * 0).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Bin", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w * 0, h * 1, true);
|
|
geo.add(fig);
|
|
var third = 0.1 / 0.3;
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.8, h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.66, h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.66, h * 0.055));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.755, h * 0.055));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.93, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.64, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.61, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.5, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.39, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.36, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.07, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (1 - 0.755), h * 0.055));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (1 - 0.66), h * 0.055));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (1 - 0.66), h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (1 - 0.8), h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0, h * (1 - third)).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Upload", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w * 0, h * 1, true);
|
|
geo.add(fig);
|
|
var third = 0.1 / 0.3;
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.8, h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.66, h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.66, h * 0.055));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.755, h * 0.055));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.93, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.64, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.61, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.5, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.39, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.36, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.07, h * (1 - third)));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (1 - 0.755), h * 0.055));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (1 - 0.66), h * 0.055));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (1 - 0.66), h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * (1 - 0.8), h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0, h * (1 - third)).close());
|
|
var fig2 = new go.PathFigure(w * 0.5, h * 0, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.26, h * 0.25));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.4, h * 0.25));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.4, h * 0.63));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.6, h * 0.63));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.6, h * 0.25));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.74, h * 0.25).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("EmptyDrink", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w * 0.15, h * 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.85, h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.7, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.3, h * 1).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Drink", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w * 0.15, h * 0, false);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.85, h * 0));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.7, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.3, h * 1).close());
|
|
var fig2 = new go.PathFigure(w * 0.235, h * 0.28, true);
|
|
geo.add(fig2);
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.765, h * 0.28));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.655, h * 0.97));
|
|
fig2.add(new go.PathSegment(go.PathSegment.Line, w * 0.345, h * 0.97).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("4Arrows", function(shape, w, h) {
|
|
var geo = new go.Geometry();
|
|
var fig = new go.PathFigure(w * 0.5, h * 0, true);
|
|
geo.add(fig);
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.65, h * 0.25));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.55, h * 0.25));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.55, h * 0.45));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.75, h * 0.45));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.75, h * 0.35));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 1, h * 0.5));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.75, h * 0.65));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.75, h * 0.55));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.55, h * 0.55));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.55, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.65, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.5, h * 1));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.35, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.45, h * 0.75));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.45, h * 0.55));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.25, h * 0.55));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.25, h * 0.65));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0, h * 0.5));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.25, h * 0.35));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.25, h * 0.45));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.45, h * 0.45));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.45, h * 0.25));
|
|
fig.add(new go.PathSegment(go.PathSegment.Line, w * 0.35, h * 0.25).close());
|
|
return geo;
|
|
});
|
|
go.Shape.defineFigureGenerator("Connector", "Ellipse");
|
|
go.Shape.defineFigureGenerator("Alternative", "TriangleUp");
|
|
go.Shape.defineFigureGenerator("Merge", "TriangleUp");
|
|
go.Shape.defineFigureGenerator("Decision", "Diamond");
|
|
go.Shape.defineFigureGenerator("DataTransmissions", "Hexagon");
|
|
go.Shape.defineFigureGenerator("Gate", "Crescent");
|
|
go.Shape.defineFigureGenerator("Delay", "HalfEllipse");
|
|
go.Shape.defineFigureGenerator("Input", "Parallelogram1");
|
|
go.Shape.defineFigureGenerator("ManualLoop", "ManualOperation");
|
|
go.Shape.defineFigureGenerator("ISOProcess", "Chevron");
|
|
go.Shape.defineFigureGenerator("MessageToUser", "SquareArrow");
|
|
go.Shape.defineFigureGenerator("MagneticData", "Cylinder1");
|
|
go.Shape.defineFigureGenerator("DirectData", "Cylinder4");
|
|
go.Shape.defineFigureGenerator("StoredData", "DataStorage");
|
|
go.Shape.defineFigureGenerator("SequentialData", "MagneticTape");
|
|
go.Shape.defineFigureGenerator("Subroutine", "Procedure");
|
|
|
|
|
|
/***/ })
|
|
|
|
}]); |