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();
        }
Exemple #3
0
        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);
        }
Exemple #5
0
        /// <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);
        }