public void DrawBackBuffer(GraphScaleData scaleData) { if (Hide || _backData == null) { return; } float height = ScaleFunction.ScaledHeight(scaleData); Matrix4 transform = Matrix4.CreateTranslation(scaleData.XShift, 0, 0) * Matrix4.Scale(2 / scaleData.BaseScale, 2 / height, 1) * Matrix4.CreateTranslation(-1, -1, 0); GL.UniformMatrix4(_shaderProgram.UniformTransform, false, ref transform); if (_drawMode == BeginMode.Lines || _drawMode == BeginMode.LineLoop || _drawMode == BeginMode.LineStrip) { GL.LineWidth(2f); } else if (_drawMode == BeginMode.Points) { GL.PointSize(2f); } if (_alphaBlend > 0) { Color4 col = Color; col.A = 1 - _alphaBlend; GL.Uniform4(_shaderProgram.UniformColor, col); } else { GL.Uniform4(_shaderProgram.UniformColor, Color); } if (_graphType == GraphType.SolidGraph) { _backBuffer.SetAttributeInfo(_shaderProgram.AttributeCoord2D, 2); _backBuffer.BeginDraw(); _backBuffer.Draw(_drawMode); _backBuffer.EndDraw(); _backBuffer.SetAttributeInfo(_shaderProgram.AttributeCoord2D, 2, false, 2 * Vector2.SizeInBytes); GL.Uniform4(_shaderProgram.UniformColor, Color4.Black); GL.LineWidth(1f); _backBuffer.BeginDraw(); _backBuffer.Draw(BeginMode.LineStrip, _backData.Length / 2); _backBuffer.EndDraw(); } else { _backBuffer.BeginDraw(); _backBuffer.Draw(_drawMode, _backData.Length / 2); _backBuffer.EndDraw(); } }
public GraphBackground(SimpleShader2D shaderProgram) { _uniformTransform = shaderProgram.UniformTransform; _uniformColor = shaderProgram.UniformColor; _selectionBlock = new GLSLVertexBuffer <Vector2>(); _selectionBlock.SetAttributeInfo(shaderProgram.AttributeCoord2D, 2); _selectionData = new Vector2[4]; _selectionData[0] = new Vector2(0, -1); _selectionData[1] = new Vector2(0, 1); _selectionData[2] = new Vector2(1, -1); _selectionData[3] = new Vector2(1, 1); _selectionBlock.BindData(_selectionData, BufferUsageHint.StaticDraw); SelectorColor = Color4.LightSkyBlue; SelectionColor = Color4.LightGray; _shiftMatrix = Matrix4.Identity; _XShift = 0; _lastMousePosition = new Point(0, 0); Enabled = true; MarkList = new MarkList(); }
public GraphXAxis(SimpleShader2D shaderProgram) { _shader = shaderProgram; _uniformTransform = shaderProgram.UniformTransform; _uniformColor = shaderProgram.UniformColor; DrawMinorTicks = true; MinorTickScale = 0.5f; TickColor = Color4.Black; GridColor = Color4.LightGray; DrawMajorGridlines = false; DrawMinorGridlines = false; _tickMajorBuffer = new GLSLVertexBuffer <Vector2>(); _tickMinorBuffer = new GLSLVertexBuffer <Vector2>(); _gridMajorBuffer = new GLSLVertexBuffer <Vector2>(); _gridMinorBuffer = new GLSLVertexBuffer <Vector2>(); _tickMajorBuffer.SetAttributeInfo(_shader.AttributeCoord2D, 2); _tickMinorBuffer.SetAttributeInfo(_shader.AttributeCoord2D, 2); _gridMajorBuffer.SetAttributeInfo(_shader.AttributeCoord2D, 2); _gridMinorBuffer.SetAttributeInfo(_shader.AttributeCoord2D, 2); MajorOffsets = new List <float>(); MinorOffsets = new List <float>(); }
public GraphYAxis(SimpleShader2D shaderProgram) { _shaderProgram = shaderProgram; YTicks = new GLSLVertexBuffer <Vector2>(); YTicks.SetAttributeInfo(shaderProgram.AttributeCoord2D, 2); }
/// <summary> /// Initialises the capture graph with the default graph collection /// </summary> public void Initialise() { //clear the canvas collection and crreate default graphs CanvasCollection.Clear(); DataVolume = new GraphCanvas("Traffic Volume", CanvasManager.SimpleShader2D) { Color = Color4.Firebrick }; PacketCount = new GraphCanvas("Packet Count", CanvasManager.SimpleShader2D) { Color = Color4.DarkSlateBlue }; MatchingCounts.Clear(); var colors = FilterColors(CanvasManager.FileManager.CountCache.FilterFiles.Count); for (int k = 0; k < CanvasManager.FileManager.CountCache.FilterFiles.Count; k++) { var filter = CanvasManager.FileManager.CountCache.FilterFiles[k]; string name = filter.Filename; name = name.Substring(name.LastIndexOf('\\') + 1, name.LastIndexOf('.') - name.LastIndexOf('\\') - 1); MatchingCounts.Add(new GraphCanvas(name, CanvasManager.SimpleShader2D) { Color = colors[k], ScaleFunction = new GraphScaleConfig(GraphScaleFunction.Maximum, GraphScaleTarget.PacketCount), GraphType = GraphType.SolidGraph }); } //set the shaders for the axis and background ui _yAxis = new GraphYAxis(CanvasManager.SimpleShader2D); _background = new GraphBackground(CanvasManager.SimpleShader2D); _xAxis = new GraphXAxis(CanvasManager.SimpleShader2D); //initialise the border Border = new GLSLVertexBuffer <Vector2>(); Border.SetAttributeInfo(CanvasManager.SimpleShader2D.AttributeCoord2D, 2); //set the default graph types DataVolume.GraphType = GraphType.LineGraph; PacketCount.GraphType = GraphType.SolidGraph; //sett eh default grraph scale funtions DataVolume.ScaleFunction = new GraphScaleConfig(GraphScaleFunction.Maximum, GraphScaleTarget.DataVolume); PacketCount.ScaleFunction = new GraphScaleConfig(GraphScaleFunction.Maximum, GraphScaleTarget.PacketCount); //add the default graphs to the canvas collection CanvasCollection.Add(PacketCount); foreach (GraphCanvas canvas in MatchingCounts) { CanvasCollection.Add(canvas); } CanvasCollection.Add(DataVolume); }