drawio/war/shapes/pid2/mxPidMisc.js
Gaudenz Alder b3a060a194 5.6.0.0 release
Former-commit-id: 648b0f02cb
2016-09-06 16:07:11 +02:00

477 lines
11 KiB
JavaScript

/**
* $Id: mxPidMisc.js,v 1.4 2013/11/22 10:46:56 mate Exp $
* Copyright (c) 2006-2013, JGraph Ltd
*/
//**********************************************************************************************************************************************************
//Fan
//**********************************************************************************************************************************************************
/**
* Extends mxShape.
*/
function mxShapePidFan(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(mxShapePidFan, mxShape);
mxShapePidFan.prototype.cst = {
SHAPE_FAN : 'mxgraph.pid2misc.fan',
FAN_TYPE : 'fanType',
COMMON : 'common',
AXIAL : 'axial',
RADIAL : 'radial'
};
/**
* Function: paintVertexShape
*
* Paints the vertex shape.
*/
mxShapePidFan.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
this.background(c, x, y, w, h);
c.setShadow(false);
this.foreground(c, x, y, w, h);
};
mxShapePidFan.prototype.background = function(c, x, y, w, h)
{
c.ellipse(0, 0, w, h);
c.fillAndStroke();
};
mxShapePidFan.prototype.foreground = function(c, x, y, w, h)
{
c.begin();
c.moveTo(w * 0.3, h * 0.045);
c.lineTo(w * 0.97, h * 0.33);
c.moveTo(w * 0.3, h * 0.955);
c.lineTo(w * 0.97, h * 0.67);
c.moveTo(w * 0.4228, h * 0.3655);
c.arcTo(w * 0.15, h * 0.03, 50, 0, 1, w * 0.5, h * 0.5);
c.arcTo(w * 0,15, h * 0.03, 50, 0, 1, w * 0.3772, h * 0.4045);
c.arcTo(w * 0.15, h * 0.03, 50, 0, 1, w * 0.3025, h * 0.271);
c.arcTo(w * 0.15, h * 0.03, 50, 0, 1, w * 0.4228, h * 0.3655);
c.close();
c.moveTo(w * 0.377, h * 0.5973);
c.arcTo(w * 0.15, h * 0.03, -50, 0, 1, w * 0.4966, h * 0.5019);
c.arcTo(w * 0,15, h * 0.03, -50, 0, 1, w * 0.423, h * 0.636);
c.arcTo(w * 0.15, h * 0.03, -50, 0, 1, w * 0.3034, h * 0.7314);
c.arcTo(w * 0.15, h * 0.03, -50, 0, 1, w * 0.377, h * 0.5973);
c.close();
c.stroke();
c.ellipse(w * 0.5, h * 0.47, w * 0.3, h * 0.06);
c.stroke();
var type = mxUtils.getValue(this.style, mxShapePidFan.prototype.cst.FAN_TYPE, 'common');
if (type === mxShapePidFan.prototype.cst.AXIAL)
{
c.begin();
c.moveTo(w * 0.1, h * 0.5);
c.lineTo(w * 0.3, h * 0.5);
c.stroke();
}
else if (type === mxShapePidFan.prototype.cst.RADIAL)
{
c.begin();
c.moveTo(w * 0.2, h * 0.4);
c.lineTo(w * 0.2, h * 0.6);
c.stroke();
}
};
mxCellRenderer.prototype.defaultShapes[mxShapePidFan.prototype.cst.SHAPE_FAN] = mxShapePidFan;
//**********************************************************************************************************************************************************
//Column
//**********************************************************************************************************************************************************
/**
* Extends mxShape.
*/
function mxShapePidColumn(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(mxShapePidColumn, mxShape);
mxShapePidColumn.prototype.cst = {
SHAPE_COLUMN : 'mxgraph.pid2misc.column',
COLUMN_TYPE : 'columnType',
COMMON : 'common',
FIXED : 'fixed',
FLUIDIZED : 'fluid',
BAFFLE : 'baffle',
VALVE : 'valve',
BUBBLE : 'bubble',
NOZZLE : 'nozzle',
TRAY : 'tray'
};
/**
* Function: paintVertexShape
*
* Paints the vertex shape.
*/
mxShapePidColumn.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
this.background(c, x, y, w, h);
c.setShadow(false);
this.foreground(c, x, y, w, h);
};
mxShapePidColumn.prototype.background = function(c, x, y, w, h)
{
h = Math.max(h, 30);
c.begin();
c.moveTo(0, 15);
c.arcTo(w * 0.5, 15, 0, 0, 1, w, 15);
c.lineTo(w, h - 15);
c.arcTo(w * 0.5, 15, 0, 0, 1, 0, h - 15);
c.close();
c.fillAndStroke();
};
mxShapePidColumn.prototype.foreground = function(c, x, y, w, h)
{
var type = mxUtils.getValue(this.style, mxShapePidColumn.prototype.cst.COLUMN_TYPE, 'common');
if (type === mxShapePidColumn.prototype.cst.FIXED)
{
var step = w * 1.2;
var range = h - 50;
var rem = range % step;
var off = rem * 0.5 + 25;
c.begin();
for (var i = 0; i <= range - step; i += step)
{
c.moveTo(0, i + off + step * 0.1);
c.lineTo(w, i + off + step * 0.1);
c.moveTo(0, i + off + step * 0.9);
c.lineTo(w, i + off + step * 0.9);
c.moveTo(0, i + off + step * 0.1);
c.lineTo(w, i + off + step * 0.9);
c.moveTo(0, i + off + step * 0.9);
c.lineTo(w, i + off + step * 0.1);
}
c.stroke();
}
else if (type === mxShapePidColumn.prototype.cst.TRAY)
{
var step = w * 0.2;
var range = h - 50;
var rem = range % step;
var off = rem * 0.5 + 25;
c.setDashed(true);
c.begin();
for (var i = 0; i <= range; i += step)
{
c.moveTo(0, i + off);
c.lineTo(w, i + off);
}
c.stroke();
}
else if (type === mxShapePidColumn.prototype.cst.FLUIDIZED)
{
var stepY = w * 0.1;
var stepX = w * 0.1;
var range = h - 50;
var rem = range % stepY;
var off = 25;
var dot = Math.min(w, h) * 0.02;
var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff');
var dashed = mxUtils.getValue(this.style, mxConstants.STYLE_DASHED, '0');
var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000');
var odd = 0;
c.setFillColor(strokeColor);
c.setDashed(true);
c.begin();
c.moveTo(0, 25);
c.lineTo(w, 25);
c.moveTo(0, h - 25);
c.lineTo(w, h - 25);
c.stroke();
if (dashed === '0')
{
c.setDashed(false);
}
else
{
c.setDashed(true);
}
var counter = 0;
for (var i = off + stepY * 0.5; i < range + off - dot; i += stepY)
{
var startJ = stepX;
odd = counter % 2;
if (odd === 0)
{
startJ = stepX * 0.5;
}
for (var j = startJ; j < w; j += stepX )
{
c.ellipse(j, i, dot, dot);
c.fillAndStroke();
}
counter++;
}
}
else if (type === mxShapePidColumn.prototype.cst.BAFFLE)
{
var stepY = w * 0.2;
var range = h - 50 - stepY;
var rem = range % stepY;
var off = 25 + stepY * 0.5;
var odd = 0;
c.setDashed(true);
c.begin();
c.moveTo(0, 25);
c.lineTo(w, 25);
c.moveTo(0, h - 25);
c.lineTo(w, h - 25);
c.stroke();
var counter = 0;
c.begin();
for (var i = off + stepY * 0.5; i < range + off; i += stepY)
{
odd = counter % 2;
if (odd === 0)
{
c.moveTo(0, i);
c.lineTo(w * 0.9, i);
c.lineTo(w * 0.9, i - stepY * 0.3);
}
else
{
c.moveTo(w * 0.1, i - stepY * 0.5);
c.lineTo(w * 0.1, i);
c.lineTo(w, i);
}
counter++;
}
c.stroke();
}
else if (type === mxShapePidColumn.prototype.cst.VALVE || type === mxShapePidColumn.prototype.cst.BUBBLE)
{
var stepY = w * 0.2;
var range = h - 50 - stepY;
var rem = range % stepY;
var off = 25 + stepY * 0.5;
var dashed = mxUtils.getValue(this.style, mxConstants.STYLE_DASHED, '0');
var odd = 0;
c.setFillColor(strokeColor);
c.setDashed(true);
c.begin();
c.moveTo(0, 25);
c.lineTo(w, 25);
c.moveTo(0, h - 25);
c.lineTo(w, h - 25);
c.stroke();
if (dashed === '0')
{
c.setDashed(false);
}
else
{
c.setDashed(true);
}
c.begin();
for (var i = off + stepY * 0.5; i < range + off; i += stepY)
{
c.moveTo(0, i);
c.lineTo(w * 0.4, i);
if (type === mxShapePidColumn.prototype.cst.VALVE)
{
c.moveTo(w * 0.4, i - stepY * 0.2);
c.lineTo(w * 0.6, i - stepY * 0.2);
}
else if (type === mxShapePidColumn.prototype.cst.BUBBLE)
{
c.moveTo(w * 0.25, i - stepY * 0.2);
c.arcTo(stepY * 3, stepY * 3, 0, 0, 1, w * 0.75, i - stepY * 0.2);
}
c.moveTo(w * 0.6, i);
c.lineTo(w, i);
}
c.stroke();
}
else if (type === mxShapePidColumn.prototype.cst.NOZZLE)
{
var step = w * 1.2;
var range = h - 50;
var rem = range % step;
var off = rem * 0.5 + 25;
var dashed = mxUtils.getValue(this.style, mxConstants.STYLE_DASHED, 0);
for (var i = 0; i <= range - step; i += step)
{
c.setDashed(true);
c.begin();
c.moveTo(0, i + off + step * 0.2);
c.lineTo(w, i + off + step * 0.2);
c.moveTo(0, i + off + step * 0.8);
c.lineTo(w, i + off + step * 0.8);
c.stroke();
if (dashed === 0)
{
c.setDashed(false);
}
else
{
c.setDashed(true);
}
c.begin();
c.moveTo(0, i + off + step * 0.2);
c.lineTo(w, i + off + step * 0.8);
c.moveTo(0, i + off + step * 0.8);
c.lineTo(w, i + off + step * 0.2);
if (i !== 0)
{
c.moveTo(0, i + off);
c.lineTo(w * 0.5, i + off);
c.moveTo(w * 0.5 - step * 0.08, i + off + step * 0.08);
c.lineTo(w * 0.5, i + off);
c.lineTo(w * 0.5 + step * 0.08, i + off + step * 0.08);
c.moveTo(w * 0.5, i + off);
c.lineTo(w * 0.5, i + off + step * 0.08);
}
c.stroke();
}
c.stroke();
}
};
mxCellRenderer.prototype.defaultShapes[mxShapePidColumn.prototype.cst.SHAPE_COLUMN] = mxShapePidColumn;
//**********************************************************************************************************************************************************
//Conveyor
//**********************************************************************************************************************************************************
/**
* Extends mxShape.
*/
function mxShapePidConveyor(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(mxShapePidConveyor, mxShape);
mxShapePidConveyor.prototype.cst = {
SHAPE_CONVEYOR : 'mxgraph.pid2misc.conveyor'
};
/**
* Function: paintVertexShape
*
* Paints the vertex shape.
*/
mxShapePidConveyor.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
this.background(c, x, y, w, h);
c.setShadow(false);
};
mxShapePidConveyor.prototype.background = function(c, x, y, w, h)
{
var wheelSize = Math.min(h, w * 0.5);
c.begin();
c.moveTo(wheelSize * 0.5, 0);
c.lineTo(w - wheelSize * 0.5, 0);
c.stroke();
c.ellipse(0, 0, wheelSize, wheelSize);
c.fillAndStroke();
c.ellipse(w - wheelSize, 0, wheelSize, wheelSize);
c.fillAndStroke();
c.begin();
c.moveTo(wheelSize * 0.5, wheelSize);
c.lineTo(w - wheelSize * 0.5, wheelSize);
c.stroke();
//holders
var dist = w - wheelSize * 1.8;
var startX = wheelSize * 0.9;
var step = wheelSize * 0.7;
for (var i = 0; i < dist; i = i + step)
{
c.rect(startX + i, 0, wheelSize * 0.2, wheelSize * 0.1);
c.fillAndStroke();
c.rect(startX + i, wheelSize * 0.9, wheelSize * 0.2, wheelSize * 0.1);
c.fillAndStroke();
}
};
mxCellRenderer.prototype.defaultShapes[mxShapePidConveyor.prototype.cst.SHAPE_CONVEYOR] = mxShapePidConveyor;