some fixes to input roll drawing, but it is massively messed up

This commit is contained in:
zeromus 2020-09-08 19:51:16 -04:00
parent daf6f516c6
commit 23fcb4c1a0
1 changed files with 18 additions and 15 deletions

View File

@ -14,28 +14,31 @@ namespace BizHawk.Client.EmuHawk
using (_renderer.LockGraphics(e.Graphics)) using (_renderer.LockGraphics(e.Graphics))
{ {
// White Background // White Background
_renderer.SetBrush(Color.White); _renderer.SetBrush(Color.Red);
_renderer.SetSolidPen(Color.White); _renderer.SetSolidPen(Color.White);
_renderer.FillRectangle(e.ClipRectangle); _renderer.FillRectangle(e.ClipRectangle);
// Lag frame calculations // Lag frame calculations
SetLagFramesArray(); SetLagFramesArray();
List<RollColumn> visibleColumns; List<RollColumn> dirtyColumns = new List<RollColumn>();
if (HorizontalOrientation) if (HorizontalOrientation)
{ {
CalculateHorizontalColumnPositions(VisibleColumns.ToList()); CalculateHorizontalColumnPositions(VisibleColumns.ToList());
visibleColumns = VisibleColumns dirtyColumns = VisibleColumns
.Take(_horizontalColumnTops.Count(c => c < e.ClipRectangle.Height)) .Take(_horizontalColumnTops.Count(c => c < e.ClipRectangle.Height))
.ToList(); .ToList();
} }
else else
{ {
visibleColumns = _columns.VisibleColumns foreach (var c in _columns.VisibleColumns)
.Where(c => c.Right > _hBar.Value) {
.Where(c => c.Left - _hBar.Value < e.ClipRectangle.Width) int vizLeft = c.Left - _hBar.Value;
.ToList(); int vizRight = c.Right - _hBar.Value;
if (vizLeft < e.ClipRectangle.Right && vizRight >= e.ClipRectangle.Left)
dirtyColumns.Add(c);
}
} }
var firstVisibleRow = Math.Max(FirstVisibleRow, 0); var firstVisibleRow = Math.Max(FirstVisibleRow, 0);
@ -45,21 +48,21 @@ namespace BizHawk.Client.EmuHawk
var lastVisibleRow = firstVisibleRow + visibleRows; var lastVisibleRow = firstVisibleRow + visibleRows;
var needsColumnRedraw = HorizontalOrientation || e.ClipRectangle.Y < ColumnHeight; var needsColumnRedraw = HorizontalOrientation || e.ClipRectangle.Y >= ColumnHeight;
if (visibleColumns.Any() && needsColumnRedraw) if (dirtyColumns.Any() && needsColumnRedraw)
{ {
DrawColumnBg(visibleColumns, e.ClipRectangle); DrawColumnBg(dirtyColumns, e.ClipRectangle);
DrawColumnText(visibleColumns); DrawColumnText(dirtyColumns);
} }
// Background // Background
DrawBg(visibleColumns, e.ClipRectangle, firstVisibleRow, lastVisibleRow); DrawBg(dirtyColumns, e.ClipRectangle, firstVisibleRow, lastVisibleRow);
// Foreground // Foreground
DrawData(visibleColumns, firstVisibleRow, lastVisibleRow); DrawData(dirtyColumns, firstVisibleRow, lastVisibleRow);
DrawColumnDrag(visibleColumns); DrawColumnDrag(dirtyColumns);
DrawCellDrag(visibleColumns); DrawCellDrag(dirtyColumns);
} }
} }