Forex_Strategy_Builder.Strategy_Layout.PnlSlotCalculateHeight C# (CSharp) Method

PnlSlotCalculateHeight() private method

Calculates the height of the Panel Slot
private PnlSlotCalculateHeight ( int slot, int width ) : int
slot int The slot number
width int The panel width
return int
        int PnlSlotCalculateHeight(int slot, int width)
        {
            Font fontCaption = new Font(Font.FontFamily, 9f);
            int  vPosition   = (int)Math.Max(fontCaption.Height, 18) + 3;

            Font fontIndicator = new Font(Font.FontFamily, 11f);
            vPosition += fontIndicator.Height;

            if (slotMinMidMax == SlotSizeMinMidMax.min)
                return vPosition + 5;

            // Calculate the height of Logic string
            if (strategy.Slot[slot].IndParam.ListParam[0].Enabled)
            {
                Graphics g = CreateGraphics();
                float fPadding = space;

                StringFormat stringFormatLogic  = new StringFormat();
                stringFormatLogic.Alignment     = StringAlignment.Center;
                stringFormatLogic.LineAlignment = StringAlignment.Center;
                stringFormatLogic.Trimming      = StringTrimming.EllipsisCharacter;
                stringFormatLogic.FormatFlags   = StringFormatFlags.NoClip;

                string sValue = strategy.Slot[slot].IndParam.ListParam[0].Text;
                Font  fontLogic = new Font(Font.FontFamily, 10.5f, FontStyle.Regular);
                SizeF sizeValue = g.MeasureString(sValue, fontLogic, (int)(width - 2 * fPadding), stringFormatLogic);
                vPosition += (int)sizeValue.Height;
                g.Dispose();
            }

            if (slotMinMidMax == SlotSizeMinMidMax.mid)
                return vPosition + 6;

            Font fontParam = new Font(Font.FontFamily, 9f, FontStyle.Regular);

            // List Params
            for (int i = 1; i < 5; i++)
                vPosition += strategy.Slot[slot].IndParam.ListParam[i].Enabled ? fontParam.Height : 0;

            // NumericParam
            foreach (NumericParam nump in strategy.Slot[slot].IndParam.NumParam)
                vPosition += nump.Enabled ? fontParam.Height : 0;

            // CheckParam
            foreach (CheckParam checkp in strategy.Slot[slot].IndParam.CheckParam)
                vPosition += checkp.Enabled ? fontParam.Height : 0;

            vPosition += 10;

            return vPosition;
        }