Created
November 11, 2014 10:32
-
-
Save davidjgraph/a5d28ab30751bcdfc5c2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * $Id: mxPidValvesOld.js,v 1.1 2013/09/09 04:54:19 mate Exp $ | |
| * Copyright (c) 2006-2013, JGraph Ltd | |
| */ | |
| //********************************************************************************************************************************************************** | |
| //Valve | |
| //********************************************************************************************************************************************************** | |
| /** | |
| * Extends mxShape. | |
| */ | |
| function mxShapePidValve(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(mxShapePidValve, mxShape); | |
| mxShapePidValve.prototype.cst = { | |
| SHAPE_VALVE : 'mxgraph.pid2valves.valve', | |
| //states | |
| DEFAULT_STATE : 'defState', | |
| CLOSED : 'closed', | |
| OPEN : 'open', | |
| //actuators | |
| ACTUATOR : 'actuator', | |
| MANUAL : 'man', | |
| DIAPHRAGM : 'diaph', | |
| BALANCED_DIAPHRAGM : 'balDiaph', | |
| MOTOR : 'motor', | |
| SPRING : 'spring', | |
| PILOT : 'pilot', | |
| SOLENOID : 'solenoid', | |
| SOLENOID_MANUAL_RESET : 'solenoidManRes', | |
| ONE_ACTING : 'singActing', | |
| TWO_ACTING : 'dbrActing', | |
| PILOT_CYLINDER : 'pilotCylinder', | |
| DIGITAL : 'digital', | |
| WEIGHT : 'weight', | |
| KEY : 'key', | |
| ELECTRO_HYDRAULIC : 'elHyd', | |
| //types | |
| VALVE_TYPE : 'valveType', | |
| BUTTERFLY : 'butterfly', | |
| CHECK : 'check', | |
| PLUG : 'plug', | |
| GATE : 'gate', | |
| GLOBE : 'globe', | |
| NEEDLE : 'needle', | |
| PLUG : 'plug', | |
| SELF_DRAINING : 'selfDrain', | |
| BALL : 'ball' | |
| }; | |
| /** | |
| * Function: paintVertexShape | |
| * | |
| * Paints the vertex shape. | |
| */ | |
| mxShapePidValve.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); | |
| }; | |
| mxShapePidValve.prototype.background = function(c, x, y, w, h) | |
| { | |
| var defState = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.DEFAULT_STATE, 'open'); | |
| var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); | |
| var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); | |
| var valveType = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.VALVE_TYPE, 'gate'); | |
| var actuator = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.ACTUATOR, 'none'); | |
| if (valveType === mxShapePidValve.prototype.cst.BALL || valveType === mxShapePidValve.prototype.cst.GLOBE) | |
| { | |
| c.ellipse(w * 0.3, h * 0.55, w * 0.4, h * 0.4) | |
| c.fillAndStroke(); | |
| } | |
| else if (valveType === mxShapePidValve.prototype.cst.PLUG) | |
| { | |
| c.begin(); | |
| c.moveTo(w * 0.5, h * 0.6); | |
| c.lineTo(w * 0.6, h * 0.75); | |
| c.lineTo(w * 0.5, h * 0.9); | |
| c.lineTo(w * 0.4, h * 0.75); | |
| c.close(); | |
| c.fillAndStroke(); | |
| } | |
| else if (valveType === mxShapePidValve.prototype.cst.NEEDLE) | |
| { | |
| c.begin(); | |
| c.moveTo(w * 0.45, h * 0.55); | |
| c.lineTo(w * 0.55, h * 0.55); | |
| c.lineTo(w * 0.5, h * 0.9); | |
| c.close(); | |
| c.fillAndStroke(); | |
| } | |
| else if (valveType === mxShapePidValve.prototype.cst.SELF_DRAINING) | |
| { | |
| c.begin(); | |
| c.moveTo(w * 0.5, h * 0.75); | |
| c.lineTo(w * 0.5, h * 0.98); | |
| c.stroke(); | |
| c.begin(); | |
| c.moveTo(w * 0.48, h * 0.95); | |
| c.lineTo(w * 0.52, h * 0.95); | |
| c.lineTo(w * 0.5, h * 0.99); | |
| c.close(); | |
| c.setFillColor(strokeColor); | |
| c.fillAndStroke(); | |
| c.setFillColor(fillColor); | |
| } | |
| if (actuator === mxShapePidValve.prototype.cst.MANUAL) | |
| { | |
| c.begin(); | |
| c.moveTo(w * 0.3, h * 0.25); | |
| c.lineTo(w * 0.7, h * 0.25); | |
| c.moveTo(w * 0.5, h * 0.25); | |
| c.lineTo(w * 0.5, h * 0.75); | |
| c.stroke(); | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.DIAPHRAGM) | |
| { | |
| c.begin(); | |
| c.moveTo(w * 0.3, h * 0.25); | |
| c.arcTo(w * 0.3, h * 0.3, 0, 0, 1, w * 0.7, h * 0.25); | |
| c.close(); | |
| c.fillAndStroke(); | |
| c.begin(); | |
| c.moveTo(w * 0.5, h * 0.25); | |
| c.lineTo(w * 0.5, h * 0.75); | |
| c.stroke(); | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.BALANCED_DIAPHRAGM) | |
| { | |
| c.begin(); | |
| c.moveTo(w * 0.5, h * 0.25); | |
| c.lineTo(w * 0.5, h * 0.75); | |
| c.stroke(); | |
| c.ellipse(w * 0.3, h * 0.15, w * 0.4, h * 0.2); | |
| c.fillAndStroke(); | |
| c.begin(); | |
| c.moveTo(w * 0.3, h * 0.25); | |
| c.lineTo(w * 0.7, h * 0.25); | |
| c.stroke(); | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.MOTOR || | |
| actuator === mxShapePidValve.prototype.cst.ELECTRO_HYDRAULIC) | |
| { | |
| c.begin(); | |
| c.moveTo(w * 0.5, h * 0.25); | |
| c.lineTo(w * 0.5, h * 0.75); | |
| c.stroke(); | |
| c.ellipse(w * 0.35, h * 0.1, w * 0.3, h * 0.3); | |
| c.fillAndStroke(); | |
| //set the proper actuator marking | |
| var m = ''; | |
| if (actuator === mxShapePidValve.prototype.cst.MOTOR) | |
| { | |
| m = 'M'; | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.ELECTRO_HYDRAULIC) | |
| { | |
| m = 'E/H'; | |
| } | |
| c.setFontSize(Math.min(w, h) * 0.15); | |
| c.setFontStyle(1); | |
| c.text(w * 0.5, h * 0.25, 0, 0, m, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.PILOT || | |
| actuator === mxShapePidValve.prototype.cst.SOLENOID || | |
| actuator === mxShapePidValve.prototype.cst.SOLENOID_MANUAL_RESET || | |
| actuator === mxShapePidValve.prototype.cst.DIGITAL || | |
| actuator === mxShapePidValve.prototype.cst.WEIGHT || | |
| actuator === mxShapePidValve.prototype.cst.KEY) | |
| { | |
| c.begin(); | |
| c.moveTo(w * 0.5, h * 0.25); | |
| c.lineTo(w * 0.5, h * 0.75); | |
| c.stroke(); | |
| c.rect(w * 0.35, h * 0.1, w * 0.3, h * 0.3); | |
| c.fillAndStroke(); | |
| //set the proper actuator marking | |
| var m = ''; | |
| if (actuator === mxShapePidValve.prototype.cst.PILOT) | |
| { | |
| m = 'P'; | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.SOLENOID) | |
| { | |
| m = 'S'; | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.SOLENOID_MANUAL_RESET) | |
| { | |
| m = 'S'; | |
| c.begin(); | |
| c.moveTo(w * 0.5, h * 0.45); | |
| c.lineTo(w * 0.65, h * 0.45); | |
| c.stroke(); | |
| c.begin(); | |
| c.moveTo(w * 0.65, h * 0.45); | |
| c.lineTo(w * 0.775, h * 0.325); | |
| c.lineTo(w * 0.9, h * 0.45); | |
| c.lineTo(w * 0.775, h * 0.575); | |
| c.close(); | |
| c.fillAndStroke(); | |
| c.setFontStyle(1); | |
| c.setFontSize(Math.min(w, h) * 0.1); | |
| c.text(w * 0.775, h * 0.45, 0, 0, 'R', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.DIGITAL) | |
| { | |
| m = 'D'; | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.WEIGHT) | |
| { | |
| m = 'W'; | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.KEY) | |
| { | |
| m = 'K'; | |
| } | |
| c.setFontSize(Math.min(w, h) * 0.15); | |
| c.setFontStyle(1); | |
| c.text(w * 0.5, h * 0.25, 0, 0, m, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.SPRING) | |
| { | |
| c.begin(); | |
| c.moveTo(w * 0.5, h * 0.1); | |
| c.lineTo(w * 0.5, h * 0.75); | |
| c.moveTo(w * 0.45, h * 0.2); | |
| c.lineTo(w * 0.55, h * 0.15); | |
| c.moveTo(w * 0.42, h * 0.31); | |
| c.lineTo(w * 0.58, h * 0.23); | |
| c.moveTo(w * 0.39, h * 0.44); | |
| c.lineTo(w * 0.61, h * 0.33); | |
| c.moveTo(w * 0.36, h * 0.57); | |
| c.lineTo(w * 0.64, h * 0.43); | |
| c.stroke(); | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.ONE_ACTING) | |
| { | |
| c.rect(w * 0.35, h * 0.1, w * 0.3, h * 0.3); | |
| c.fillAndStroke(); | |
| c.begin(); | |
| c.moveTo(w * 0.5, h * 0.25); | |
| c.lineTo(w * 0.5, h * 0.75); | |
| c.moveTo(w * 0.35, h * 0.25); | |
| c.lineTo(w, h * 0.25); | |
| c.moveTo(w * 0.85, h * 0.2); | |
| c.lineTo(w * 0.8, h * 0.3); | |
| c.moveTo(w * 0.88, h * 0.2); | |
| c.lineTo(w * 0.83, h * 0.3); | |
| c.stroke(); | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.TWO_ACTING) | |
| { | |
| c.rect(w * 0.35, h * 0.1, w * 0.3, h * 0.3); | |
| c.fillAndStroke(); | |
| c.begin(); | |
| c.moveTo(w * 0.5, h * 0.25); | |
| c.lineTo(w * 0.5, h * 0.75); | |
| c.moveTo(w * 0.35, h * 0.25); | |
| c.lineTo(w * 0.65, h * 0.25); | |
| c.moveTo(w * 0.65, h * 0.175); | |
| c.lineTo(w, h * 0.175); | |
| c.moveTo(w * 0.85, h * 0.125); | |
| c.lineTo(w * 0.8, h * 0.225); | |
| c.moveTo(w * 0.88, h * 0.125); | |
| c.lineTo(w * 0.83, h * 0.225); | |
| c.moveTo(w * 0.65, h * 0.325); | |
| c.lineTo(w, h * 0.325); | |
| c.moveTo(w * 0.85, h * 0.275); | |
| c.lineTo(w * 0.8, h * 0.375); | |
| c.moveTo(w * 0.88, h * 0.275); | |
| c.lineTo(w * 0.83, h * 0.375); | |
| c.stroke(); | |
| } | |
| else if (actuator === mxShapePidValve.prototype.cst.PILOT_CYLINDER) | |
| { | |
| c.rect(w * 0.35, h * 0.1, w * 0.3, h * 0.3); | |
| c.fillAndStroke(); | |
| c.begin(); | |
| c.moveTo(w * 0.5, h * 0.25); | |
| c.lineTo(w * 0.5, h * 0.75); | |
| c.moveTo(w * 0.35, h * 0.25); | |
| c.lineTo(w * 0.8, h * 0.25); | |
| c.stroke(); | |
| c.rect(w * 0.8, h * 0.15, w * 0.2, h * 0.2); | |
| c.fillAndStroke(); | |
| c.setFontSize(Math.min(w, h) * 0.15); | |
| c.setFontStyle(1); | |
| c.text(w * 0.9, h * 0.25, 0, 0, 'P', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); | |
| } | |
| if (valveType === mxShapePidValve.prototype.cst.GATE || | |
| valveType === mxShapePidValve.prototype.cst.BALL || | |
| valveType === mxShapePidValve.prototype.cst.PLUG || | |
| valveType === mxShapePidValve.prototype.cst.NEEDLE || | |
| valveType === mxShapePidValve.prototype.cst.SELF_DRAINING || | |
| valveType === mxShapePidValve.prototype.cst.GLOBE) | |
| { | |
| c.begin(); | |
| c.moveTo(0, h * 0.5); | |
| c.lineTo(w * 0.5, h * 0.75); | |
| c.lineTo(0, h); | |
| c.close(); | |
| c.moveTo(w, h * 0.5); | |
| c.lineTo(w, h); | |
| c.lineTo(w * 0.5, h * 0.75); | |
| c.close(); | |
| if (defState === mxShapePidValve.prototype.cst.CLOSED) | |
| { | |
| c.setFillColor(strokeColor); | |
| c.fillAndStroke(); | |
| c.setFillColor(fillColor); | |
| } | |
| else | |
| { | |
| c.fillAndStroke(); | |
| } | |
| } | |
| else if (valveType === mxShapePidValve.prototype.cst.BUTTERFLY || | |
| valveType === mxShapePidValve.prototype.cst.CHECK) | |
| { | |
| c.begin(); | |
| c.moveTo(0, h); | |
| c.lineTo(0, h * 0.5); | |
| c.lineTo(w, h); | |
| c.lineTo(w, h * 0.5); | |
| c.stroke(); | |
| if (valveType === mxShapePidValve.prototype.cst.BUTTERFLY) | |
| { | |
| c.ellipse(w * 0.4, h * 0.65, w * 0.2, h * 0.2); | |
| c.fillAndStroke(); | |
| } | |
| else if (valveType === mxShapePidValve.prototype.cst.CHECK) | |
| { | |
| c.begin(); | |
| c.moveTo(w * 0.89, h * 0.86); | |
| c.lineTo(w * 0.99, h * 0.995); | |
| c.lineTo(w * 0.82, h * 0.995); | |
| c.close(); | |
| c.setFillColor(strokeColor); | |
| c.fillAndStroke(); | |
| c.setFillColor(fillColor); | |
| } | |
| } | |
| }; | |
| mxShapePidValve.prototype.foreground = function(c, x, y, w, h) | |
| { | |
| var defState = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.DEFAULT_STATE, 'open'); | |
| var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); | |
| var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); | |
| var valveType = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.VALVE_TYPE, 'gate'); | |
| if (valveType === mxShapePidValve.prototype.cst.BALL) | |
| { | |
| c.ellipse(w * 0.3, h * 0.55, w * 0.4, h * 0.4) | |
| c.fillAndStroke(); | |
| } | |
| else if (valveType === mxShapePidValve.prototype.cst.GLOBE) | |
| { | |
| c.ellipse(w * 0.3, h * 0.55, w * 0.4, h * 0.4) | |
| c.setFillColor(strokeColor); | |
| c.fillAndStroke(); | |
| c.setFillColor(fillColor); | |
| } | |
| else if (valveType === mxShapePidValve.prototype.cst.PLUG) | |
| { | |
| c.begin(); | |
| c.moveTo(w * 0.5, h * 0.6); | |
| c.lineTo(w * 0.6, h * 0.75); | |
| c.lineTo(w * 0.5, h * 0.9); | |
| c.lineTo(w * 0.4, h * 0.75); | |
| c.close(); | |
| c.fillAndStroke(); | |
| } | |
| else if (valveType === mxShapePidValve.prototype.cst.NEEDLE) | |
| { | |
| c.begin(); | |
| c.moveTo(w * 0.45, h * 0.55); | |
| c.lineTo(w * 0.55, h * 0.55); | |
| c.lineTo(w * 0.5, h * 0.9); | |
| c.close(); | |
| c.fillAndStroke(); | |
| } | |
| }; | |
| mxCellRenderer.prototype.defaultShapes[mxShapePidValve.prototype.cst.SHAPE_VALVE] = mxShapePidValve; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment