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;
|