using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace ActualsToImage_0_1
{
public partial class Form1 : Form
{
/// <summary>
/// Constructor
/// </summary>
public Form1()
{
InitializeComponent();
}
// List of int to hold numbers
List<int> numbers = new List<int>();
/// <summary>
/// Load text file (then process it)
/// </summary>
private void bLoad_Click(object sender, EventArgs e)
{
// New stream
Stream fStream = null;
// New Open File Dialog
OpenFileDialog ofdLoad = new OpenFileDialog();
// Set Open File Dialog properties
ofdLoad.InitialDirectory = Path.GetDirectoryName(Application.ExecutablePath); ;
ofdLoad.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
ofdLoad.FilterIndex = 1;
ofdLoad.RestoreDirectory = true;
// Show Open File Dialog
if (ofdLoad.ShowDialog() == DialogResult.OK)
{
// A file was selected
try
{
// Open file
if ((fStream = ofdLoad.OpenFile()) != null)
{
// Process file
using (System.IO.StreamReader file = new System.IO.StreamReader(fStream))
{
// Declare line
string line;
// Declare number
int number;
// Clear numbers list
numbers.Clear();
// Read each line
while ((line = file.ReadLine()) != null)
{
// Set current number
number = Convert.ToInt32(line);
// Validate nubmer
if (number >= 0 && number <= 36)
{
// Add to numbers list
numbers.Add(number);
}
}
}
// Set base file name
string bfn = Path.GetDirectoryName(ofdLoad.FileName) + "\\" + Path.GetFileNameWithoutExtension(ofdLoad.FileName);
// Set default font
Font font = new Font("Arial", 18);
// Set font by dialog
if (cbFont.Checked)
{
// Show the dialog.
DialogResult result = fdFont.ShowDialog();
// See if OK was pressed.
if (result == DialogResult.OK)
{
// Get Font.
font = fdFont.Font;
}
}
/*
* Process each pair
*/
// Handle 3 iterations
for (int p = 0; p < 3; ++p)
{
// Set pair variable
string pair = "";
// Red/Black
if (p == 0)
{
// Check state
if (!cbRB.Checked)
{
// Halt iteration
continue;
}
// Set pair
pair = "RB";
}
// Even/Odd
if (p == 1)
{
// Check state
if (!cbEO.Checked)
{
// Halt iteration
continue;
}
// Set pair
pair = "EO";
}
// Low/High
if (p == 2)
{
// Check state
if (!cbLH.Checked)
{
// Halt iteration
continue;
}
// Set pair
pair = "LH";
}
// Clear datagridview
dgvGen.DataSource = null;
//Customize output.
dgvGen.RowHeadersVisible = false;
dgvGen.ColumnHeadersVisible = false;
dgvGen.ScrollBars = ScrollBars.None;
dgvGen.AutoSize = true;
dgvGen.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
dgvGen.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
//Set datasource.
dgvGen.DataSource = GetDataTable();
// Cell colorization
for (int r = 0; r < dgvGen.Rows.Count; ++r)
{
// Check number
for (int c = 0; c < Convert.ToInt32(nudCols.Value); ++c)
{
if (c < dgvGen.Rows[r].Cells.Count && !(dgvGen.Rows[r].Cells[c].Value is DBNull))
{
// Formatting
dgvGen.Rows[r].Cells[c].Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
dgvGen.Rows[r].Cells[c].Style.BackColor = getColorMulti(Convert.ToInt32(dgvGen.Rows[r].Cells[c].Value), pair);
dgvGen.Rows[r].Cells[c].Style.ForeColor = Color.White;
dgvGen.Rows[r].Cells[c].Style.Font = font;
}
else
{
// Break loops
goto breaker;
}
}
}
// Breaker label
breaker:
// Auto-resize
int i = 0;
foreach (DataGridViewColumn c in dgvGen.Columns)
{
i += c.Width;
}
dgvGen.Width = i + dgvGen.RowHeadersWidth;
dgvGen.Height = dgvGen.GetRowDisplayRectangle(dgvGen.NewRowIndex, true).Bottom + dgvGen.GetRowDisplayRectangle(dgvGen.NewRowIndex, false).Height;
// Bitmap
Bitmap bitmap = new Bitmap(dgvGen.Width, dgvGen.Height);
dgvGen.DrawToBitmap(bitmap, new Rectangle(Point.Empty, dgvGen.Size));
bitmap.Save(bfn + "-" + pair + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
bitmap.Dispose();
}
// Messagebox
if (cbRB.Checked || cbEO.Checked || cbLH.Checked)
{
MessageBox.Show("Generated!", "Done", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
}
/// <summary>
/// Helper method.
/// </summary>
DataTable GetDataTable()
{
// DataTable
DataTable dt = new DataTable();
// Index for numbers' list
int index = 0;
// Columns
for (int i = 0; i < Convert.ToInt32(nudCols.Value); i++)
{
dt.Columns.Add(string.Format("Column{0}", i));
}
// Rows
while (index < (numbers.Count - 1))
{
// String array to hold numbers
string[] row = new string[dt.Columns.Count];
// Prepare current row
for (int i = 0; i < dt.Columns.Count; i++)
{
// Check for EOL
if (index == (numbers.Count - 1))
{
// Truncate loop
break;
}
// Add to string array
row[i] = numbers[index].ToString();
// Rise index
index++;
}
// Add row
dt.Rows.Add(row);
}
// Return DataTable
return dt;
}
/// <summary>
/// Cleanup code
/// </summary>
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
// Open BetSelection.cc
System.Diagnostics.Process.Start("http://betselection.cc");
}
/// <summary>
/// Determines color of incoming number, acording to pair
/// </summary>
/// <param name="num">input number</param>
/// <param name="pair">Any of: RB, EO, LH</param>
/// <returns></returns>
public Color getColorMulti(int num, string pair)
{
// Switch pairs
switch (pair)
{
case "RB":
// Red-Black pair
switch (num)
{
case 1:
case 3:
case 5:
case 7:
case 9:
case 12:
case 14:
case 16:
case 18:
case 19:
case 21:
case 23:
case 25:
case 27:
case 30:
case 32:
case 34:
case 36:
// Red number
return Color.Red;
case 2:
case 4:
case 6:
case 8:
case 10:
case 11:
case 13:
case 15:
case 17:
case 20:
case 22:
case 24:
case 26:
case 28:
case 29:
case 31:
case 33:
case 35:
// Black number
return Color.Black;
default:
// Anything else = green
return Color.Green;
}
break;
case "EO":
// Even-Odd pair
switch (num)
{
case 2:
case 4:
case 6:
case 8:
case 10:
case 12:
case 14:
case 16:
case 18:
case 20:
case 22:
case 24:
case 26:
case 28:
case 30:
case 32:
case 34:
case 36:
// Even number
return Color.Blue;
case 1:
case 3:
case 5:
case 7:
case 9:
case 11:
case 13:
case 15:
case 17:
case 19:
case 21:
case 23:
case 25:
case 27:
case 29:
case 31:
case 33:
case 35:
// Odd number
return Color.DarkMagenta ;
default:
// Anything else = green
return Color.Green;
}
break;
case "LH":
// Low-High pair
if (num > 0 && num <= 18)
{
// Low
return Color.Orange;
}
else if (num <= 36 && num >= 19)
{
// High
return Color.Purple;
}
else
{
// Green
return Color.Green;
}
break;
}
// Codepaths
return Color.White;
}
}
}