public virtual void ChangeMessage(string message, bool keepOffset = false)
        {
            this.Message = string.IsNullOrWhiteSpace(message)
                               ? LedMessageBoard.Properties.Settings.Default.Global_DefaultViewPortMessage
                               : message;

            this.MessageWidth = LedFont.StringWidth(message);

            if (!keepOffset)
            {
                this.Offset = this.Width;
            }
        }
        public static ViewPort GetViewPort(string message, int width = ViewPort.MaxWidth)
        {
            width = Math.Min(width, ViewPort.MaxWidth);

            if (LedFont.StringWidth(message) > width)
            {
                return(new ScrollingViewPort(width, message));
            }
            else
            {
                return(new StaticViewPort(message));
            }
        }
        private bool[,] RenderAsBools()
        {
            var result = new bool[MaxWidth, Height];

            int xloc = this.Offset + this.LeftMargin;

            foreach (var c in this.Message.ToCharArray())
            {
                this.RenderChar(c, xloc, ref result);
                xloc = xloc + LedFont.CharWidth(c) + 1;
            }

            return(result);
        }
        private void RenderChar(char c, int offset, ref bool[,] buffer)
        {
            var charWidth   = LedFont.CharWidth(c);
            var blankOffset = LedFont.LeftBlankColumns(c);

            for (var x = 0; x < charWidth; x++)
            {
                var xi = x + offset;

                if (xi < this.LeftMargin || xi >= this.Width + this.LeftMargin)
                {
                    continue;
                }

                var xchar = x + blankOffset;

                for (var y = 0; y < Height; y++)
                {
                    var bit = LedFont.IsSet(c, xchar, y);

                    buffer[xi, y] = bit;
                }
            }
        }
 public StaticViewPort(string message) : base(LedFont.StringWidth(message), message)
 {
 }