/** * Copyright (c) 2006-2015, JGraph Ltd * Copyright (c) 2006-2015, Gaudenz Alder */ /** * Class: mxRectangleShape * * Extends to implement a rectangle shape. * This shape is registered under * in . * * Constructor: mxRectangleShape * * Constructs a new rectangle shape. * * Parameters: * * bounds - that defines the bounds. This is stored in * . * fill - String that defines the fill color. This is stored in . * stroke - String that defines the stroke color. This is stored in . * strokewidth - Optional integer that defines the stroke width. Default is * 1. This is stored in . */ function mxRectangleShape(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(mxRectangleShape, mxShape); /** * Function: isHtmlAllowed * * Returns true for non-rounded, non-rotated shapes with no glass gradient. */ mxRectangleShape.prototype.isHtmlAllowed = function() { var events = true; if (this.style != null) { events = mxUtils.getValue(this.style, mxConstants.STYLE_POINTER_EVENTS, '1') == '1'; } return !this.isRounded && !this.glass && this.rotation == 0 && (events || (this.fill != null && this.fill != mxConstants.NONE)); }; /** * Function: paintBackground * * Generic background painting implementation. */ mxRectangleShape.prototype.paintBackground = function(c, x, y, w, h) { var events = true; if (this.style != null) { events = mxUtils.getValue(this.style, mxConstants.STYLE_POINTER_EVENTS, '1') == '1'; } if (events || (this.fill != null && this.fill != mxConstants.NONE) || (this.stroke != null && this.stroke != mxConstants.NONE)) { if (!events && (this.fill == null || this.fill == mxConstants.NONE)) { c.pointerEvents = false; } if (this.isRounded) { var r = 0; if (mxUtils.getValue(this.style, mxConstants.STYLE_ABSOLUTE_ARCSIZE, 0) == '1') { r = Math.min(w / 2, Math.min(h / 2, mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2)); } else { var f = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.RECTANGLE_ROUNDING_FACTOR * 100) / 100; r = Math.min(w * f, h * f); } c.roundrect(x, y, w, h, r, r); } else { c.rect(x, y, w, h); } c.fillAndStroke(); } }; /** * Function: isRoundable * * Adds roundable support. */ mxRectangleShape.prototype.isRoundable = function(c, x, y, w, h) { return true; }; /** * Function: paintForeground * * Generic background painting implementation. */ mxRectangleShape.prototype.paintForeground = function(c, x, y, w, h) { if (this.glass && !this.outline && this.fill != null && this.fill != mxConstants.NONE) { this.paintGlassEffect(c, x, y, w, h, this.getArcSize(w + this.strokewidth, h + this.strokewidth)); } };