function mxShapeFlowchartDocument2(bounds, fill, stroke, strokewidth)
{
mxShape.call(this);
this.bounds = bounds;
this.fill = fill;
this.stroke = stroke;
this.strokewidth = (strokewidth != null) ? strokewidth : 1;
this.size = 0.5;
};
mxUtils.extend(mxShapeFlowchartDocument2, mxActor);
mxShapeFlowchartDocument2.prototype.cst = {DOCUMENT2 : 'mxgraph.flowchart.document2'};
mxShapeFlowchartDocument2.prototype.customProperties = [
{name: 'size', dispName: 'Wave Size', type: 'float', min:0, max:1, defVal:0.25},
];
mxShapeFlowchartDocument2.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
var dy = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size))));
var fy = 1.4;
var r = 5;
c.begin();
c.moveTo(w - r, 0);
c.arcTo(r, r, 0, 0, 1, w, r);
c.lineTo(w, h - dy / 2);
c.quadTo(w * 3 / 4, h - dy * fy, w / 2, h - dy / 2);
c.quadTo(w / 4, h - dy * (1 - fy), 0, h - dy / 2);
c.lineTo(0, dy / 2);
c.lineTo(0, r);
c.arcTo(r, r, 0, 0, 1, r, 0);
c.close();
c.fillAndStroke();
};
mxCellRenderer.registerShape(mxShapeFlowchartDocument2.prototype.cst.DOCUMENT2, mxShapeFlowchartDocument2);
mxShapeFlowchartDocument2.prototype.constraints =
[new mxConnectionConstraint(new mxPoint(0.25, 0), false),
new mxConnectionConstraint(new mxPoint(0.5, 0), false),
new mxConnectionConstraint(new mxPoint(0.75, 0), false),
new mxConnectionConstraint(new mxPoint(0, 0.25), false),
new mxConnectionConstraint(new mxPoint(0, 0.5), false),
new mxConnectionConstraint(new mxPoint(0, 0.75), false),
new mxConnectionConstraint(new mxPoint(1, 0.25), false),
new mxConnectionConstraint(new mxPoint(1, 0.5), false),
new mxConnectionConstraint(new mxPoint(1, 0.75), false)];
Graph.handleFactory[mxShapeFlowchartDocument2.prototype.cst.DOCUMENT2] = function(state)
{
var handles = [Graph.createHandle(state, ['size'], function(bounds)
{
var size = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'size', this.size))));
return new mxPoint(bounds.x + 3 * bounds.width / 4, bounds.y + (1 - size) * bounds.height);
}, function(bounds, pt)
{
this.state.style['size'] = Math.max(0, Math.min(1, (bounds.y + bounds.height - pt.y) / bounds.height));
})];
return handles;
};