| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 | /** * Copyright (c) 2006-2015, JGraph Ltd * Copyright (c) 2006-2015, Gaudenz Alder *//** * Class: mxDoubleEllipse * * Extends <mxShape> to implement a double ellipse shape. This shape is * registered under <mxConstants.SHAPE_DOUBLE_ELLIPSE> in <mxCellRenderer>. * Use the following override to only fill the inner ellipse in this shape: *  * (code) * mxDoubleEllipse.prototype.paintVertexShape = function(c, x, y, w, h) * { *   c.ellipse(x, y, w, h); *   c.stroke(); *    *   var inset = mxUtils.getValue(this.style, mxConstants.STYLE_MARGIN, Math.min(3 + this.strokewidth, Math.min(w / 5, h / 5))); *   x += inset; *   y += inset; *   w -= 2 * inset; *   h -= 2 * inset; *    *   if (w > 0 && h > 0) *   { *     c.ellipse(x, y, w, h); *   } *    *   c.fillAndStroke(); * }; * (end) *  * Constructor: mxDoubleEllipse * * Constructs a new ellipse shape. * * Parameters: * * bounds - <mxRectangle> that defines the bounds. This is stored in * <mxShape.bounds>. * fill - String that defines the fill color. This is stored in <fill>. * stroke - String that defines the stroke color. This is stored in <stroke>. * strokewidth - Optional integer that defines the stroke width. Default is * 1. This is stored in <strokewidth>. */function mxDoubleEllipse(bounds, fill, stroke, strokewidth){	mxShape.call(this);	this.bounds = bounds;	this.fill = fill;	this.stroke = stroke;	this.strokewidth = (strokewidth != null) ? strokewidth : 1;};/** * Extends mxShape. */mxUtils.extend(mxDoubleEllipse, mxShape);/** * Variable: vmlScale *  * Scale for improving the precision of VML rendering. Default is 10. */mxDoubleEllipse.prototype.vmlScale = 10;/** * Function: paintBackground *  * Paints the background. */mxDoubleEllipse.prototype.paintBackground = function(c, x, y, w, h){	c.ellipse(x, y, w, h);	c.fillAndStroke();};/** * Function: paintForeground *  * Paints the foreground. */mxDoubleEllipse.prototype.paintForeground = function(c, x, y, w, h){	if (!this.outline)	{		var margin = mxUtils.getValue(this.style, mxConstants.STYLE_MARGIN, Math.min(3 + this.strokewidth, Math.min(w / 5, h / 5)));		x += margin;		y += margin;		w -= 2 * margin;		h -= 2 * margin;				// FIXME: Rounding issues in IE8 standards mode (not in 1.x)		if (w > 0 && h > 0)		{			c.ellipse(x, y, w, h);		}				c.stroke();	}};/** * Function: getLabelBounds *  * Returns the bounds for the label. */mxDoubleEllipse.prototype.getLabelBounds = function(rect){	var margin = (mxUtils.getValue(this.style, mxConstants.STYLE_MARGIN, Math.min(3 + this.strokewidth,			Math.min(rect.width / 5 / this.scale, rect.height / 5 / this.scale)))) * this.scale;	return new mxRectangle(rect.x + margin, rect.y + margin, rect.width - 2 * margin, rect.height - 2 * margin);};__mxOutput.mxDoubleEllipse = typeof mxDoubleEllipse !== 'undefined' ? mxDoubleEllipse : undefined;
 |