iSpyApplication.Controls.VolumeLevel.OnPaint C# (CSharp) Method

OnPaint() protected method

protected OnPaint ( PaintEventArgs pe ) : void
pe PaintEventArgs
return void
        protected override void OnPaint(PaintEventArgs pe)
        {
            var gMic = pe.Graphics;
            var rc = ClientRectangle;

            string m = "", txt = Micobject.name;
            if (IsEnabled)
            {
                var l = _levels;
                if (l != null && !AudioSourceErrorState)
                {
                    int bh = (rc.Height - 20)/Micobject.settings.channels - (Micobject.settings.channels - 1)*2;
                    if (bh <= 2)
                        bh = 2;
                    using (var lgb = new SolidBrush(MainForm.VolumeLevelColor))
                    {
                        for (int j = 0; j < Micobject.settings.channels; j++)
                        {
                            float f = 0f;
                            if (j < l.Length)
                                f = l[j];
                            if (f > 1) f = 1;
                            int drawW = Convert.ToInt32(Convert.ToDouble(rc.Width*f) - 1.0);
                            if (drawW < 1)
                                drawW = 1;

                            gMic.FillRectangle(lgb, rc.X + 2, rc.Y + 2 + j*bh + (j*2), drawW - 4, bh);

                        }
                        var d = (Convert.ToDouble(rc.Width - 4)/100.00);
                        var mx1 = (float) (d*Micobject.detector.minsensitivity);
                        var mx2 = (float) (d*Micobject.detector.maxsensitivity);

                        gMic.DrawLine(_vline, mx1, 2, mx1, rc.Height - 20);
                        gMic.DrawLine(_vline, mx2, 2, mx2, rc.Height - 20);

                        if (Listening)
                        {
                            gMic.DrawString("LIVE", MainForm.Drawfont, MainForm.CameraDrawBrush, new PointF(5, 4));
                        }

                        if (Recording)
                        {
                            gMic.FillEllipse(MainForm.RecordBrush, new Rectangle(rc.Width - 14, 2, 8, 8));
                        }
                    }
                }
                else
                {
                    var img = Properties.Resources.connecting;
                    gMic.DrawImage(img, Width - img.Width-2, 2, img.Width, img.Height);
                }
            }
            else
            {
                txt += ": " + LocRm.GetString("Offline");
                gMic.DrawString(SourceType + ": " + Micobject.name, MainForm.Drawfont, MainForm.CameraDrawBrush, new PointF(5, 5));
            }

            string flags = "";
            if (Micobject.alerts.active)
                flags += "!";

            if (ForcedRecording)
                flags += "F";
            else
            {
                if (Micobject.detector.recordondetect)
                    flags += "D";
                else
                {
                    if (Micobject.detector.recordonalert)
                        flags += "A";
                    else
                    {
                        flags += "N";
                    }
                }
            }
            if (Micobject.schedule.active)
                flags += "S";

            if (flags != "")
                m = flags + "  " + m;

            gMic.DrawString(m + txt, MainForm.Drawfont, MainForm.CameraDrawBrush, new PointF(5, rc.Height - 18));

            if (_mouseMove > Helper.Now.AddSeconds(-3) && MainForm.Conf.ShowOverlayControls)
            {
                DrawOverlay(gMic);
            }

            using (var grabBrush = new SolidBrush(BorderColor))
            using (var borderPen = new Pen(grabBrush, BorderWidth))
            {
                if (!Paired && !MainForm.LockLayout)
                {
                    var grabPoints = new[]
                                     {
                                         new Point(rc.Width - 15, rc.Height), new Point(rc.Width, rc.Height - 15),
                                         new Point(rc.Width, rc.Height)
                                     };
                    gMic.FillPolygon(grabBrush, grabPoints);
                }

                if (!Paired)
                    gMic.DrawRectangle(borderPen, 0, 0, rc.Width - 1, rc.Height - 1);
                else
                {
                    gMic.DrawLine(borderPen, 0, 0, 0, rc.Height - 1);
                    gMic.DrawLine(borderPen, 0, rc.Height - 1, rc.Width - 1, rc.Height - 1);
                    gMic.DrawLine(borderPen, rc.Width - 1, rc.Height - 1, rc.Width - 1, 0);
                }
            }

            base.OnPaint(pe);
        }