146 lines
5.4 KiB
C#
146 lines
5.4 KiB
C#
/******************************************************
|
|
* ROMVault2 is written by Gordon J. *
|
|
* Contact gordon@romvault.com *
|
|
* Copyright 2014 *
|
|
******************************************************/
|
|
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.Globalization;
|
|
using System.Windows.Forms;
|
|
using ROMVault2.RvDB;
|
|
using ROMVault2.SupportedFiles;
|
|
|
|
namespace ROMVault2
|
|
{
|
|
|
|
public class RomCellDraw : DataGridViewImageCell
|
|
{
|
|
private readonly Color _bgCol;
|
|
private readonly string _bitmapName;
|
|
|
|
public RomCellDraw(string name,Color bgCol)
|
|
{
|
|
_bitmapName = name;
|
|
_bgCol = bgCol;
|
|
|
|
}
|
|
|
|
protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
|
|
{
|
|
graphics.FillRectangle(new SolidBrush(_bgCol), cellBounds);
|
|
|
|
Bitmap bm= rvImages.GetBitmap(_bitmapName);
|
|
|
|
if (bm != null)
|
|
{
|
|
graphics.DrawImage(bm, cellBounds.Left, cellBounds.Top, bm.Width,bm.Height);
|
|
bm.Dispose();
|
|
}
|
|
|
|
|
|
else
|
|
Debug.WriteLine("Missing Graphic for " + _bitmapName);
|
|
}
|
|
|
|
}
|
|
|
|
public class DirCellDraw : DataGridViewImageCell
|
|
{
|
|
private readonly Color _bgCol;
|
|
private readonly RvDir _cellDir;
|
|
|
|
public DirCellDraw(RvDir cellDir, Color bgCol)
|
|
{
|
|
_cellDir = cellDir;
|
|
_bgCol = bgCol;
|
|
}
|
|
|
|
protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
|
|
{
|
|
|
|
graphics.FillRectangle(new SolidBrush(_bgCol), cellBounds);
|
|
|
|
string bitmapName;
|
|
|
|
switch (_cellDir.FileType)
|
|
{
|
|
case FileType.Zip:
|
|
if (_cellDir.RepStatus == RepStatus.DirCorrect && _cellDir.ZipStatus==ZipStatus.TrrntZip)
|
|
bitmapName = "ZipTZ";
|
|
else
|
|
bitmapName = "Zip" + _cellDir.RepStatus;
|
|
break;
|
|
default:
|
|
bitmapName = "Dir" + _cellDir.RepStatus;
|
|
break;
|
|
}
|
|
|
|
Bitmap bm = rvImages.GetBitmap(bitmapName);
|
|
|
|
if (bm != null)
|
|
{
|
|
graphics.DrawImage(bm, cellBounds.Left + 10, cellBounds.Top, 21, 17);
|
|
bm.Dispose();
|
|
}
|
|
else
|
|
Debug.WriteLine("Missing Graphic for " + bitmapName);
|
|
}
|
|
}
|
|
|
|
public class DirCellStatusDraw : DataGridViewImageCell
|
|
{
|
|
private readonly RvDir _dir;
|
|
public DirCellStatusDraw(RvDir dir)
|
|
{
|
|
_dir = dir;
|
|
}
|
|
|
|
protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
|
|
{
|
|
Font drawFont = new Font("Arial", 9);
|
|
SolidBrush drawBrushBlack = new SolidBrush(Color.Black);
|
|
SolidBrush drawBrushWhite = new SolidBrush(Color.White);
|
|
|
|
graphics.FillRectangle(drawBrushWhite, cellBounds);
|
|
|
|
int gOff;
|
|
int columnIndex = 0;
|
|
for (int l = 0; l < RepairStatus.DisplayOrder.Length; l++)
|
|
{
|
|
if (l >= 13) columnIndex = l;
|
|
|
|
if (_dir.DirStatus.Get(RepairStatus.DisplayOrder[l]) <= 0) continue;
|
|
|
|
gOff = cellBounds.Left + FrmMain.GameGridColumnXPositions[columnIndex];
|
|
Bitmap bm = rvImages.GetBitmap(@"G_" + RepairStatus.DisplayOrder[l]);
|
|
if (bm != null)
|
|
{
|
|
graphics.DrawImage(bm, gOff, cellBounds.Top, 21, 18);
|
|
bm.Dispose();
|
|
}
|
|
else
|
|
Debug.WriteLine("Missing Graphics for " + "G_" + RepairStatus.DisplayOrder[l]);
|
|
|
|
columnIndex++;
|
|
}
|
|
|
|
columnIndex = 0;
|
|
for (int l = 0; l < RepairStatus.DisplayOrder.Length; l++)
|
|
{
|
|
if (l >= 13)
|
|
columnIndex = l;
|
|
|
|
if (_dir.DirStatus.Get(RepairStatus.DisplayOrder[l]) > 0)
|
|
{
|
|
gOff = cellBounds.Left + FrmMain.GameGridColumnXPositions[columnIndex];
|
|
graphics.DrawString(_dir.DirStatus.Get(RepairStatus.DisplayOrder[l]).ToString(CultureInfo.InvariantCulture), drawFont, drawBrushBlack, new PointF(gOff + 20, cellBounds.Top + 3));
|
|
columnIndex++;
|
|
}
|
|
}
|
|
drawBrushBlack.Dispose();
|
|
drawBrushWhite.Dispose();
|
|
drawFont.Dispose();
|
|
}
|
|
}
|
|
} |