public ScrollableView() : base(Program.MainWidth, Program.MainHeight) { // Create the shared surface _sharedSurface = new CellSurface(37, Program.MainHeight - 2); _sharedSurface.FillWithRandomGarbage(Font); // Create a 012345... border around the surface int counter = 0; for (int i = 0; i < Surface.Width; i++) { _sharedSurface.SetGlyph(i, 0, counter + 48, Color.Green, Color.Black, Mirror.None); _sharedSurface.SetGlyph(i, _sharedSurface.Height - 1, counter + 48, Color.Green, Color.Black, Mirror.None); counter++; if (counter == 10) { counter = 0; } } counter = 0; for (int i = 0; i < Surface.Height; i++) { _sharedSurface.SetGlyph(0, i, counter + 48, Color.Green, Color.Black, Mirror.None); _sharedSurface.SetGlyph(_sharedSurface.Width - 1, i, counter + 48, Color.Green, Color.Black, Mirror.None); counter++; if (counter == 10) { counter = 0; } } // Create viewer controls and attach them to the surface SadConsole.UI.Controls.SurfaceViewer viewer = new SadConsole.UI.Controls.SurfaceViewer(15, 15); viewer.ScrollBarMode = SadConsole.UI.Controls.SurfaceViewer.ScrollBarModes.AsNeeded; viewer.SetSurface(_sharedSurface); viewer.Position = (2, 1); viewer.MouseMove += Viewer_MouseMove; Controls.Add(viewer); viewer = new SadConsole.UI.Controls.SurfaceViewer(20, 10); viewer.ScrollBarMode = SadConsole.UI.Controls.SurfaceViewer.ScrollBarModes.AsNeeded; viewer.SetSurface(_sharedSurface); viewer.Position = (19, 1); viewer.MouseMove += Viewer_MouseMove; Controls.Add(viewer); viewer = new SadConsole.UI.Controls.SurfaceViewer(20, 10); viewer.ScrollBarMode = SadConsole.UI.Controls.SurfaceViewer.ScrollBarModes.AsNeeded; viewer.SetSurface(_sharedSurface); viewer.Position = (19, 12); viewer.MouseMove += Viewer_MouseMove; Controls.Add(viewer); viewer = new SadConsole.UI.Controls.SurfaceViewer(_sharedSurface.Width, _sharedSurface.Height); viewer.ScrollBarMode = SadConsole.UI.Controls.SurfaceViewer.ScrollBarModes.AsNeeded; viewer.SetSurface(_sharedSurface); viewer.Position = (41, 1); viewer.MouseMove += Viewer_MouseMove; Controls.Add(viewer); // Setup mouse palette mouseColors = new Palette(new[] { Color.AnsiBlue, Color.AnsiCyan, Color.AnsiGreen, Color.AnsiGreenBright, Color.AnsiRed, Color.AnsiRedBright }); }