private void setBottomRight(SimpleOsdForm i_Osd)
        {
            Rectangle workingArea = Screen.PrimaryScreen.WorkingArea;
            int       x           = workingArea.Right - i_Osd.Width - k_Margin;
            int       y           = workingArea.Bottom - i_Osd.Height - k_Margin;

            i_Osd.Location = new Point(x, y);
        }
 private void applySettingsToOSD(SimpleOsdForm i_Osd)
 {
     i_Osd.HideFast();
     // apply initial settings
     i_Osd.Label.ForeColor = Properties.Settings.Default.ForeColor;
     i_Osd.Label.BackColor = Properties.Settings.Default.BackColor;
     i_Osd.Label.Font      = Properties.Settings.Default.Font;
     i_Osd.Opacity         = Properties.Settings.Default.Opacity;
     i_Osd.Border          = Properties.Settings.Default.OsdBorder;
 }
        private void loadExample()
        {
            if (this.m_ExampleOSD == null)
            {
                const bool k_Clickthrough = true;

                this.m_ExampleOSD            = new SimpleOsdForm(!k_Clickthrough);
                this.m_ExampleOSD.MouseUp   += new MouseEventHandler(m_ExampleOSD_MouseUp);
                this.m_ExampleOSD.MouseDown += new MouseEventHandler(m_ExampleOSD_MouseDown);
                this.m_ExampleOSD.Move      += new EventHandler(m_ExampleOSD_Move);
                this.m_ExampleOSD.Label.Text = "Example";
                this.updateExampleLocation();

                this.applySettingsToOSD(this.m_ExampleOSD);
            }

            this.m_ExampleOSD.ShowAlways(this);
        }
 private void setUpperRight(SimpleOsdForm i_Osd)
 {
     this.setBottomRight(i_Osd);
     i_Osd.Location = new Point(i_Osd.Location.X, k_Margin);
 }
 private void setUpperLeft(SimpleOsdForm i_Osd)
 {
     i_Osd.Location = new Point(k_Margin, k_Margin);
 }
        private void updateStickyOSD()
        {
            // style normal - hide and return
            if (this.m_Style == eStyle.Normal)
            {
                foreach (SimpleOsdForm o in m_ListStickyOSD)
                {
                    o.HideFast();
                }
                return;
            }

            // initialize osds
            if (m_ListStickyOSD.Count == 0)
            {
                for (int c = 0; c < 3; c++)
                {
                    SimpleOsdForm o = new SimpleOsdForm();
                    this.applySettingsToOSD(o);
                    m_ListStickyOSD.Add(o);
                }
            }

            int width  = 0;
            int height = 0;
            int active = 0;

            foreach (eOSD o in Enum.GetValues(typeof(eOSD)))
            {
                int i = (int)o;

                if (m_ListLabels[i] == string.Empty)
                {
                    m_ListStickyOSD[i].HideFast();
                    continue;
                }

                active++;

                m_ListStickyOSD[i].Label.AutoSize = true; // this fix width and height
                m_ListStickyOSD[i].Label.Text     = m_ListLabels[i];

                // get max width
                if (m_ListStickyOSD[i].Label.Width > width)
                {
                    width = m_ListStickyOSD[i].Label.Width;
                }

                if (height == 0)
                {
                    height = m_ListStickyOSD[i].Label.Height;
                }

                m_ListStickyOSD[i].ShowAlways();
            }

            Point p = this.m_OSD.Location;

            if (this.m_OsdLocation == eLocation.BottomRight ||
                this.m_OsdLocation == eLocation.UpperRight)
            {
                p.X = Screen.PrimaryScreen.WorkingArea.Width - width - k_Margin;
            }

            int horizontal_width = active * width + active * k_Margin;
            int hz_half_width    = horizontal_width / 2;

            if (this.m_Style == eStyle.StickyHorizontal &&
                (this.m_OsdLocation == eLocation.BottomRight ||
                 this.m_OsdLocation == eLocation.UpperRight))
            {
                p.X = Screen.PrimaryScreen.WorkingArea.Width - horizontal_width;
            }

            int vertical_height = active * height + active * k_Margin;
            int vt_half_height  = vertical_height / 2;

            if (this.m_Style == eStyle.StickyVertical &&
                (this.m_OsdLocation == eLocation.BottomLeft ||
                 this.m_OsdLocation == eLocation.BottomRight))
            {
                p.Y = Screen.PrimaryScreen.WorkingArea.Height - vertical_height;
            }

            if (this.m_OsdLocation == eLocation.Center)
            {
                if (this.m_Style == eStyle.StickyHorizontal)
                {
                    p.X = p.X - hz_half_width;
                }
                else if (this.m_Style == eStyle.StickyVertical)
                {
                    p.Y = p.Y - vt_half_height;
                }
            }

            this.m_OSD.Location = p;

            foreach (eOSD o in Enum.GetValues(typeof(eOSD)))
            {
                int i = (int)o;

                if (m_ListLabels[i] == string.Empty)
                {
                    continue;
                }

                m_ListStickyOSD[i].Location = p;

                switch (this.m_Style)
                {
                case eStyle.StickyHorizontal:
                    //p.X = p.X + m_ListStickyOSD[i].Label.Width + k_Margin;
                    p.X = p.X + width + k_Margin;
                    break;

                case eStyle.StickyVertical:
                    p.Y = p.Y + m_ListStickyOSD[i].Label.Height + k_Margin;
                    break;
                }
            }

            foreach (SimpleOsdForm o in m_ListStickyOSD)
            {
                if (width > 0)
                {
                    // fixed width for sticky vertical
                    o.Label.AutoSize = false;
                    o.Label.Width    = width;
                }
            }
        }