drawio-offline
Version:
diagrams.net desktop
177 lines (149 loc) • 4.54 kB
JavaScript
/**
* $Id: mxCiscoSafe.js,v 1.0 2020/14/05 13:05:39 mate Exp $
* Copyright (c) 2006-2020, JGraph Ltd
*/
//**********************************************************************************************************************************************************
//Composite Icon
//**********************************************************************************************************************************************************
/**
* Extends mxShape.
*/
function mxShapeCiscoSafeCompositeIcon(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(mxShapeCiscoSafeCompositeIcon, mxShape);
mxShapeCiscoSafeCompositeIcon.prototype.cst = {
SHAPE_COMPOSITE_ICON : 'mxgraph.cisco_safe.compositeIcon'
};
/**
* Function: paintVertexShape
*
* Paints the vertex shape.
*/
mxShapeCiscoSafeCompositeIcon.prototype.paintVertexShape = function(c, x, y, w, h)
{
var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', 'none');
var bgColor = mxUtils.getValue(this.state.style, 'bgColor', '#C2E0AE');
var fillColor = mxUtils.getValue(this.state.style, 'fillColor', 'none');
var shadow = mxUtils.getValue(this.state.style, 'shadow', false);
var opacity = parseFloat(mxUtils.getValue(this.state.style, 'opacity', false));
c.translate(x, y);
var bgIcon = mxUtils.getValue(this.state.style, 'bgIcon', '');
var prIcon = mxUtils.getValue(this.state.style, 'resIcon', '');
stencil = mxStencilRegistry.getStencil(prIcon);
if (stencil != null && bgIcon != 'mxgraph.cisco_safe.architecture.generic_appliance')
{
stencil.drawShape(c, this, 0, 0, w, h);
}
c.setFillColor(strokeColor);
c.setStrokeColor('none');
c.setShadow(false);
if (bgIcon == 'ellipse')
{
c.begin();
(w < 100) ? c.ellipse(w * 0.01, h * 0.01, w * 0.98, h * 0.98) : c.ellipse(1, 1, w - 2, h - 2);
c.fill();
}
else if (bgIcon == 'threat1')
{
c.begin();
c.ellipse(w * 0.18, h * 0.16, w * 0.66, h * 0.65);
c.fill();
}
else if (bgIcon == 'threat2')
{
c.begin();
c.ellipse(w * 0.01, h * 0.01, w * 0.98, h * 0.6);
c.fill();
}
else if (bgIcon == 'threat3')
{
c.begin();
c.ellipse(w * 0.18, h * 0.2, w * 0.64, h * 0.79);
c.fill();
}
else if (bgIcon == 'threat4')
{
c.begin();
c.ellipse(w * 0.09, h * 0.03, w * 0.82, h * 0.77);
c.fill();
}
else if (bgIcon == 'threat5')
{
c.begin();
c.ellipse(w * 0.16, h * 0.01, w * 0.67, h * 0.72);
c.fill();
}
else if (bgIcon == 'mxgraph.cisco_safe.architecture.generic_appliance')
{
c.setShadow(shadow);
c.setFillColor(bgColor);
c.begin();
c.moveTo(0, h * 0.3);
c.arcTo(w * 0.3, h * 0.3, 0, 0, 1, w * 0.3, 0);
c.lineTo(w * 0.7, 0);
c.arcTo(w * 0.3, h * 0.3, 0, 0, 1, w, h * 0.3);
c.lineTo(w, h * 0.7);
c.arcTo(w * 0.3, h * 0.3, 0, 0, 1, w * 0.7, h);
c.lineTo(w * 0.3, h);
c.arcTo(w * 0.3, h * 0.3, 0, 0, 1, 0, h * 0.7);
c.close();
c.fill();
c.setShadow(false);
c.setFillColor(strokeColor);
var stencil = mxStencilRegistry.getStencil(bgIcon);
if (stencil != null)
{
stencil.drawShape(c, this, w * 0.26, h * 0.26, w * 0.48, h * 0.48)
}
c.setAlpha(0.5);
c.setFillColor('#ffffff');
c.ellipse(w * 0.105, h * 0.48, w * 0.04, h * 0.04);
c.fill();
c.ellipse(w * 0.855, h * 0.48, w * 0.04, h * 0.04);
c.fill();
c.ellipse(w * 0.48, h * 0.105, w * 0.04, h * 0.04);
c.fill();
c.ellipse(w * 0.48, h * 0.855, w * 0.04, h * 0.04);
c.fill();
c.ellipse(w * 0.17, h * 0.17, w * 0.04, h * 0.04);
c.fill();
c.ellipse(w * 0.79, h * 0.17, w * 0.04, h * 0.04);
c.fill();
c.ellipse(w * 0.79, h * 0.79, w * 0.04, h * 0.04);
c.fill();
c.ellipse(w * 0.17, h * 0.79, w * 0.04, h * 0.04);
c.fill();
c.setAlpha(opacity / 100);
}
else
{
var stencil = mxStencilRegistry.getStencil(bgIcon);
if (stencil != null)
{
(w < 100) ? stencil.drawShape(c, this, w * 0.01, h * 0.01, w * 0.98, h * 0.98) : stencil.drawShape(c, this, 1, 1, w - 2, h - 2);
}
}
stencil = mxStencilRegistry.getStencil(prIcon);
if (stencil != null )
{
c.setFillColor(fillColor);
if (bgIcon == 'mxgraph.cisco_safe.architecture.generic_appliance')
{
stencil.drawShape(c, this, w * 0.25, h * 0.25, w * 0.5, h * 0.5)
}
else
{
stencil.drawShape(c, this, 0, 0, w, h);
}
}
};
mxCellRenderer.registerShape(mxShapeCiscoSafeCompositeIcon.prototype.cst.SHAPE_COMPOSITE_ICON, mxShapeCiscoSafeCompositeIcon);