ShiftOS-C-/source/WindowsFormsApplication1/Artpad.cs
Michael VanOverbeek 14edb9eade Uploaded source code for ShiftOS 0.1.1 Beta 2.3
Initial commit of repository.
2016-04-09 13:16:39 -04:00

1783 lines
76 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Text;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
namespace ShiftOS
{
public partial class Artpad : Form
{
/// <summary>
/// Artpad's GUI.
/// </summary>
public Artpad()
{
InitializeComponent();
}
#region Variables
public int rolldownsize;
public int oldbordersize;
public int oldtitlebarheight;
public bool justopened = false;
public bool needtorollback = false;
public int minimumsizewidth = 502;
public int minimumsizeheight = 398;
public int codepointsearned;
public bool codepointscooldown = false;
public bool needtosave = false;
int canvaswidth = 150;
int canvasheight = 100;
public Bitmap canvasbitmap;
Color canvascolor = Color.White;
Bitmap previewcanvasbitmap;
int magnificationlevel = 1;
Rectangle magnifyRect;
Graphics graphicsbitmap;
public Color drawingcolour = Color.Black;
string selectedtool = "Pixel Setter";
bool pixalplacermovable = false;
public string savelocation;
System.Drawing.Drawing2D.GraphicsPath mousePath = new System.Drawing.Drawing2D.GraphicsPath();
int pencilwidth = 1;
undo undo = new undo();
Point thisPoint;
int eracerwidth = 15;
string eracertype = "square";
int paintbrushwidth = 15;
string paintbrushtype = "circle";
float rectanglestartpointx;
float rectanglestartpointy;
bool currentlydrawingsquare;
int squarewidth = 1;
bool squarefillon = false;
Color fillsquarecolor = Color.Black;
float ovalstartpointx;
float ovalstartpointy;
bool currentlydrawingoval;
int ovalwidth = 2;
bool ovalfillon = false;
Color fillovalcolor = Color.Black;
float linestartpointx;
float linestartpointy;
bool currentlydrawingline;
int linewidth = 2;
bool currentlydrawingtext;
System.Drawing.Font drawtextfont = new System.Drawing.Font("Microsoft Sans Serif", 16);
int drawtextsize;
string drawtextfontname;
FontStyle drawtextfontstyle;
#endregion
#region Setup
private void Template_Load(object sender, EventArgs e)
{
justopened = true;
this.Left = (Screen.PrimaryScreen.Bounds.Width - this.Width) / 2;
this.Top = (Screen.PrimaryScreen.Bounds.Height - this.Height) / 2;
setuppreview();
settoolcolours();
loadcolors();
AddFonts();
setuptoolbox();
determinevisiblepallets();
tmrsetupui.Start();
}
public void setupcanvas()
{
canvasbitmap = new Bitmap(canvaswidth, canvasheight);
previewcanvasbitmap = new Bitmap(canvaswidth, canvasheight);
picdrawingdisplay.Size = new Size(canvaswidth, canvasheight);
picdrawingdisplay.Location = new Point((pnldrawingbackground.Width - canvaswidth) / 2, (pnldrawingbackground.Height - canvasheight) / 2);
graphicsbitmap = Graphics.FromImage(canvasbitmap);
SolidBrush canvasbrush = new SolidBrush(canvascolor);
graphicsbitmap.FillRectangle(canvasbrush, 0, 0, canvaswidth, canvasheight);
magnificationlevel = 1;
lblzoomlevel.Text = magnificationlevel + "X";
setuppreview();
needtosave = false;
}
public void setuptoolbox()
{
btnpixelplacer.Hide();
btnpencil.Hide();
btnfloodfill.Hide();
btnoval.Hide();
btnsquare.Hide();
btnlinetool.Hide();
btnpaintbrush.Hide();
btntexttool.Hide();
btneracer.Hide();
btnnew.Hide();
btnopen.Hide();
btnsave.Hide();
btnundo.Hide();
btnredo.Hide();
btnpixelplacermovementmode.Hide();
if (API.Upgrades["artpadpixelplacer"] == true)
btnpixelplacer.Show();
if (API.Upgrades["artpadpencil"] == true)
btnpencil.Show();
if (API.Upgrades["artpadfilltool"] == true)
btnfloodfill.Show();
if (API.Upgrades["artpadovaltool"] == true)
btnoval.Show();
if (API.Upgrades["artpadrectangletool"] == true)
btnsquare.Show();
if (API.Upgrades["artpadlinetool"] == true)
btnlinetool.Show();
if (API.Upgrades["artpadpaintbrush"] == true)
btnpaintbrush.Show();
if (API.Upgrades["artpadtexttool"] == true)
btntexttool.Show();
if (API.Upgrades["artpaderaser"] == true)
btneracer.Show();
if (API.Upgrades["artpadnew"] == true)
btnnew.Show();
if (API.Upgrades["artpadload"] == true)
btnopen.Show();
if (API.Upgrades["artpadsave"] == true)
btnsave.Show();
if (API.Upgrades["artpadundo"] == true)
btnundo.Show();
if (API.Upgrades["artpadredo"] == true)
btnredo.Show();
if (API.Upgrades["artpadppmovementmode"] == true)
btnpixelplacermovementmode.Show();
}
private void AddFonts()
{
// Get the installed fonts collection.
InstalledFontCollection allFonts = new InstalledFontCollection();
// Get an array of the system's font familiies.
FontFamily[] fontFamilies = allFonts.Families;
// Display the font families.
foreach (FontFamily myFont in fontFamilies)
{
combodrawtextfont.Items.Add(myFont.Name);
}
//font_family
combodrawtextfont.SelectedItem = combodrawtextfont.Items[1];
combofontstyle.Text = "Regular";
txtdrawtextsize.Text = "16";
}
#endregion
#region General
// ERROR: Handles clauses are not supported in C#
private void btnpixelsetter_Click(object sender, EventArgs e)
{
selectedtool = "Pixel Setter";
gettoolsettings(pnlpixelsettersettings);
}
private void gettoolsettings(Panel toolpanel)
{
//hide all properties panels
pnlpixelsettersettings.Hide();
pnlmagnifiersettings.Hide();
//show chosen panel
toolpanel.Dock = DockStyle.Fill;
toolpanel.BringToFront();
toolpanel.Show();
setuppreview();
}
// ERROR: Handles clauses are not supported in C#
private void btnpixelsettersetpixel_Click(object sender, EventArgs e)
{
try
{
undo.undoStack.Push((Image)canvasbitmap.Clone());
undo.redoStack.Clear();
canvasbitmap.SetPixel(Convert.ToInt32(txtpixelsetterxcoordinate.Text), Convert.ToInt32(txtpixelsetterycoordinate.Text), drawingcolour);
picdrawingdisplay.Invalidate();
}
catch (Exception ex)
{
API.CreateInfoboxSession("ArtPad - Placement Error!", "You have specified invalid coordinates for the pixel setter." + Environment.NewLine + Environment.NewLine + "Remember that the top left pixel has the coordinates 0, 0", infobox.InfoboxMode.Info);
}
}
// ERROR: Handles clauses are not supported in C#
private void btnmagnify_Click(object sender, EventArgs e)
{
selectedtool = "Magnifier";
gettoolsettings(pnlmagnifiersettings);
}
#endregion
#region Drawing Display
// ERROR: Handles clauses are not supported in C#
private void picdrawingdisplay_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
e.Graphics.FillRectangle(Brushes.White, 0, 0, canvaswidth * magnificationlevel, canvasheight * magnificationlevel);
e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
e.Graphics.PixelOffsetMode = PixelOffsetMode.Half;
e.Graphics.ScaleTransform(magnificationlevel, magnificationlevel);
if (currentlydrawingsquare == true)
{
GC.Collect();
Graphics g = Graphics.FromImage(previewcanvasbitmap);
previewcanvasbitmap = new Bitmap(canvasbitmap.Width, canvasbitmap.Height);
g = Graphics.FromImage(previewcanvasbitmap);
var CurrentPen = new Pen(Color.FromArgb(255, drawingcolour), squarewidth);
var CurrentBrush = new SolidBrush(Color.FromArgb(255, fillsquarecolor));
RectangleF rectdraw = new RectangleF(rectanglestartpointx, rectanglestartpointy, thisPoint.X - rectanglestartpointx, thisPoint.Y - rectanglestartpointy);
int heightamount;
int widthamount;
if (rectdraw.Height < 0)
heightamount = (int)Math.Abs(rectdraw.Height);
else
heightamount = 0;
if (rectdraw.Width < 0)
widthamount = (int)Math.Abs(rectdraw.Width);
else
widthamount = 0;
if (squarewidth > 0)
{
g.DrawRectangle(CurrentPen, rectdraw.X - widthamount, rectdraw.Y - heightamount, Math.Abs(rectdraw.Width), Math.Abs(rectdraw.Height));
}
if (squarefillon == true)
{
float correctionamount = squarewidth / 2;
int addfillamount;
if (squarewidth > 0)
addfillamount = squarewidth;
else
addfillamount = -1;
g.FillRectangle(CurrentBrush, (rectdraw.X - widthamount) + correctionamount, (rectdraw.Y - heightamount) + correctionamount, Math.Abs(rectdraw.Width) - addfillamount, Math.Abs(rectdraw.Height) - addfillamount);
}
}
if (currentlydrawingoval == true)
{
GC.Collect();
Graphics g = Graphics.FromImage(previewcanvasbitmap);
previewcanvasbitmap = new Bitmap(canvasbitmap.Width, canvasbitmap.Height);
g = Graphics.FromImage(previewcanvasbitmap);
var CurrentPen = new Pen(Color.FromArgb(255, drawingcolour), ovalwidth);
var CurrentBrush = new SolidBrush(Color.FromArgb(255, fillovalcolor));
RectangleF ovaldraw = new RectangleF(ovalstartpointx, ovalstartpointy, thisPoint.X - ovalstartpointx, thisPoint.Y - ovalstartpointy);
int heightamount;
int widthamount;
if (ovaldraw.Height < 0)
heightamount = (int)Math.Abs(ovaldraw.Height);
else
heightamount = 0;
if (ovaldraw.Width < 0)
widthamount = (int)Math.Abs(ovaldraw.Width);
else
widthamount = 0;
if (ovalwidth > 0)
{
g.DrawEllipse(CurrentPen, ovaldraw.X - widthamount, ovaldraw.Y - heightamount, Math.Abs(ovaldraw.Width), Math.Abs(ovaldraw.Height));
}
if (ovalfillon == true)
{
g.FillEllipse(CurrentBrush, (ovaldraw.X - widthamount), (ovaldraw.Y - heightamount), Math.Abs(ovaldraw.Width), Math.Abs(ovaldraw.Height));
}
}
if (currentlydrawingline == true)
{
GC.Collect();
Graphics g = Graphics.FromImage(previewcanvasbitmap);
previewcanvasbitmap = new Bitmap(canvasbitmap.Width, canvasbitmap.Height);
g = Graphics.FromImage(previewcanvasbitmap);
var CurrentPen = new Pen(Color.FromArgb(255, drawingcolour), linewidth);
g.DrawLine(CurrentPen, linestartpointx, linestartpointy, thisPoint.X, thisPoint.Y);
}
if (currentlydrawingtext == true)
{
GC.Collect();
Graphics g = Graphics.FromImage(previewcanvasbitmap);
previewcanvasbitmap = new Bitmap(canvasbitmap.Width, canvasbitmap.Height);
g = Graphics.FromImage(previewcanvasbitmap);
var CurrentBrush = new SolidBrush(Color.FromArgb(255, drawingcolour));
g.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit;
drawtextfont = new System.Drawing.Font(drawtextfontname, drawtextsize, drawtextfontstyle);
g.DrawString(txtdrawstringtext.Text, drawtextfont, CurrentBrush, thisPoint.X, thisPoint.Y);
}
try
{
e.Graphics.DrawImage(canvasbitmap, 0, 0);
e.Graphics.DrawImage(previewcanvasbitmap, 0, 0);
}
catch (System.OutOfMemoryException ex)
{
}
}
// ERROR: Handles clauses are not supported in C#
private void picdrawingdisplay_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
undo.undoStack.Push((Image)canvasbitmap.Clone());
undo.redoStack.Clear();
thisPoint.X = (int)(e.Location.X - (magnificationlevel / 2)) / magnificationlevel;
thisPoint.Y = (int)(e.Location.Y - (magnificationlevel / 2)) / magnificationlevel;
if (selectedtool == "Pixel Placer")
{
if (e.Button == MouseButtons.Left)
{
if (thisPoint.X < canvasbitmap.Width && thisPoint.X > -1)
{
if (thisPoint.Y < canvasbitmap.Height && thisPoint.Y > -1)
{
canvasbitmap.SetPixel(thisPoint.X, thisPoint.Y, drawingcolour);
//set the pixel on the canvas
picdrawingdisplay.Invalidate();
//refresh the picture from the canvas
}
}
}
}
if (selectedtool == "Pencil")
{
if (e.Button == MouseButtons.Left)
{
mousePath.StartFigure();
picdrawingdisplay.Invalidate();
}
}
if (selectedtool == "Flood Fill")
{
if (e.Button == MouseButtons.Left)
{
if (thisPoint.X < canvasbitmap.Width && thisPoint.X > -1)
{
if (thisPoint.Y < canvasbitmap.Height && thisPoint.Y > -1)
{
SafeFloodFill(canvasbitmap, thisPoint.X, thisPoint.Y, drawingcolour);
graphicsbitmap = Graphics.FromImage(canvasbitmap);
picdrawingdisplay.Invalidate();
}
}
}
}
if (selectedtool == "Square Tool")
{
if (e.Button == MouseButtons.Left)
{
rectanglestartpointx = thisPoint.X;
rectanglestartpointy = thisPoint.Y;
currentlydrawingsquare = true;
picdrawingdisplay.Invalidate();
}
}
if (selectedtool == "Oval Tool")
{
if (e.Button == MouseButtons.Left)
{
ovalstartpointx = thisPoint.X;
ovalstartpointy = thisPoint.Y;
currentlydrawingoval = true;
picdrawingdisplay.Invalidate();
}
}
if (selectedtool == "Line Tool")
{
if (e.Button == MouseButtons.Left)
{
linestartpointx = thisPoint.X;
linestartpointy = thisPoint.Y;
currentlydrawingline = true;
picdrawingdisplay.Invalidate();
}
}
if (selectedtool == "Text Tool")
{
if (e.Button == MouseButtons.Left)
{
currentlydrawingtext = true;
picdrawingdisplay.Invalidate();
}
}
if (selectedtool == "Eracer")
{
var CurrentPen = new Pen(Color.FromArgb(255, canvascolor), eracerwidth);
float halfsize = eracerwidth / 2;
if (eracertype == "circle")
{
graphicsbitmap.DrawEllipse(CurrentPen, thisPoint.X - halfsize, thisPoint.Y - halfsize, eracerwidth, eracerwidth);
}
else {
graphicsbitmap.DrawRectangle(CurrentPen, thisPoint.X - halfsize, thisPoint.Y - halfsize, eracerwidth, eracerwidth);
}
picdrawingdisplay.Invalidate();
}
if (selectedtool == "Paint Brush")
{
var CurrentBrush = new SolidBrush(Color.FromArgb(255, drawingcolour));
float halfsize = paintbrushwidth / 2;
if (paintbrushtype == "circle")
{
graphicsbitmap.FillEllipse(CurrentBrush, thisPoint.X - halfsize, thisPoint.Y - halfsize, paintbrushwidth, paintbrushwidth);
}
else {
graphicsbitmap.FillRectangle(CurrentBrush, thisPoint.X - halfsize, thisPoint.Y - halfsize, paintbrushwidth, paintbrushwidth);
}
picdrawingdisplay.Invalidate();
CurrentBrush.Dispose();
}
preparecooldown();
}
// ERROR: Handles clauses are not supported in C#
private void picdrawingdisplay_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
Point lastpoint;
thisPoint.X = (int)(e.Location.X - (magnificationlevel / 2)) / magnificationlevel;
thisPoint.Y = (int)(e.Location.Y - (magnificationlevel / 2)) / magnificationlevel;
if (e.Button == MouseButtons.Left)
{
undo.redoStack.Clear();
lastpoint = thisPoint;
preparecooldown();
if (selectedtool == "Pixel Placer" && pixalplacermovable == true)
{
if (thisPoint.X < canvasbitmap.Width && thisPoint.X > -1)
{
if (thisPoint.Y < canvasbitmap.Height && thisPoint.Y > -1)
{
canvasbitmap.SetPixel(thisPoint.X, thisPoint.Y, drawingcolour);
//set the pixel on the canvas
picdrawingdisplay.Invalidate();
//refresh the picture from the canvas
}
}
}
if (selectedtool == "Pencil")
{
mousePath.AddLine(thisPoint.X, thisPoint.Y, thisPoint.X, thisPoint.Y);
var CurrentPen = new Pen(Color.FromArgb(255, drawingcolour), pencilwidth);
graphicsbitmap.DrawPath(CurrentPen, mousePath);
picdrawingdisplay.Invalidate();
}
if (selectedtool == "Square Tool")
{
picdrawingdisplay.Invalidate();
}
if (selectedtool == "Oval Tool")
{
picdrawingdisplay.Invalidate();
}
if (selectedtool == "Line Tool")
{
picdrawingdisplay.Invalidate();
}
if (selectedtool == "Text Tool")
{
picdrawingdisplay.Invalidate();
}
if (selectedtool == "Eracer")
{
var CurrentPen = new Pen(Color.FromArgb(255, canvascolor), eracerwidth);
float halfsize = eracerwidth / 2;
if (eracertype == "circle")
{
graphicsbitmap.DrawEllipse(CurrentPen, thisPoint.X - halfsize, thisPoint.Y - halfsize, eracerwidth, eracerwidth);
}
else {
graphicsbitmap.DrawRectangle(CurrentPen, thisPoint.X - halfsize, thisPoint.Y - halfsize, eracerwidth, eracerwidth);
}
picdrawingdisplay.Invalidate();
}
if (selectedtool == "Paint Brush")
{
var CurrentBrush = new SolidBrush(Color.FromArgb(255, drawingcolour));
float halfsize = paintbrushwidth / 2;
if (paintbrushtype == "circle")
{
graphicsbitmap.FillEllipse(CurrentBrush, thisPoint.X - halfsize, thisPoint.Y - halfsize, paintbrushwidth, paintbrushwidth);
}
else {
graphicsbitmap.FillRectangle(CurrentBrush, thisPoint.X - halfsize, thisPoint.Y - halfsize, paintbrushwidth, paintbrushwidth);
}
picdrawingdisplay.Invalidate();
}
}
}
// ERROR: Handles clauses are not supported in C#
private void picdrawingdisplay_MouseUp(object sender, MouseEventArgs e)
{
thisPoint.X = (int)(e.Location.X - (magnificationlevel / 2)) / magnificationlevel;
thisPoint.Y = (int)(e.Location.Y - (magnificationlevel / 2)) / magnificationlevel;
if (selectedtool == "Pencil")
{
if (e.Button == MouseButtons.Left)
{
mousePath.Reset();
}
}
if (selectedtool == "Square Tool")
{
picdrawingdisplay.Invalidate();
currentlydrawingsquare = false;
}
if (selectedtool == "Oval Tool")
{
picdrawingdisplay.Invalidate();
currentlydrawingoval = false;
}
if (selectedtool == "Line Tool")
{
picdrawingdisplay.Invalidate();
currentlydrawingline = false;
}
if (selectedtool == "Text Tool")
{
picdrawingdisplay.Invalidate();
currentlydrawingtext = false;
}
using (Graphics g = Graphics.FromImage(canvasbitmap))
{
g.DrawImage(previewcanvasbitmap, 0, 0);
}
previewcanvasbitmap = new Bitmap(canvasbitmap.Width, canvasbitmap.Height);
picdrawingdisplay.Invalidate();
preparecooldown();
}
#endregion
#region Color Palettes
// ERROR: Handles clauses are not supported in C#
private void colourpallet1_MouseClick(object sender, MouseEventArgs e)
{
var s = (Control)sender;
if (e.Button == MouseButtons.Left)
{
drawingcolour = s.BackColor;
setuppreview();
settoolcolours();
}
else {
API.CreateColorPickerSession("Artpad Pallete Color", s.BackColor);
API.ColorPickerSession.FormClosing += (object se, FormClosingEventArgs a) =>
{
s.BackColor = API.GetLastColorFromSession();
};
}
}
//<unused>
public void loadcolors()
{
/*bool allwhite = true;
for (int i = 0; i <= 127; i++)
{
if (ShiftOSDesktop.artpadcolourpallets(i) == null)
{
}
else {
allwhite = false;
}
}
if (allwhite == true)
{
for (i = 0; i <= 127; i++)
{
ShiftOSDesktop.artpadcolourpallets(i) = Color.Black;
}
}
colourpallet1.BackColor = ShiftOSDesktop.artpadcolourpallets(0);
colourpallet2.BackColor = ShiftOSDesktop.artpadcolourpallets(1);
colourpallet3.BackColor = ShiftOSDesktop.artpadcolourpallets(2);
colourpallet4.BackColor = ShiftOSDesktop.artpadcolourpallets(3);
colourpallet5.BackColor = ShiftOSDesktop.artpadcolourpallets(4);
colourpallet6.BackColor = ShiftOSDesktop.artpadcolourpallets(5);
colourpallet7.BackColor = ShiftOSDesktop.artpadcolourpallets(6);
colourpallet8.BackColor = ShiftOSDesktop.artpadcolourpallets(7);
colourpallet9.BackColor = ShiftOSDesktop.artpadcolourpallets(8);
colourpallet10.BackColor = ShiftOSDesktop.artpadcolourpallets(9);
colourpallet11.BackColor = ShiftOSDesktop.artpadcolourpallets(10);
colourpallet12.BackColor = ShiftOSDesktop.artpadcolourpallets(11);
colourpallet13.BackColor = ShiftOSDesktop.artpadcolourpallets(12);
colourpallet14.BackColor = ShiftOSDesktop.artpadcolourpallets(13);
colourpallet15.BackColor = ShiftOSDesktop.artpadcolourpallets(14);
colourpallet16.BackColor = ShiftOSDesktop.artpadcolourpallets(15);
colourpallet17.BackColor = ShiftOSDesktop.artpadcolourpallets(16);
colourpallet18.BackColor = ShiftOSDesktop.artpadcolourpallets(17);
colourpallet19.BackColor = ShiftOSDesktop.artpadcolourpallets(18);
colourpallet20.BackColor = ShiftOSDesktop.artpadcolourpallets(19);
colourpallet21.BackColor = ShiftOSDesktop.artpadcolourpallets(20);
colourpallet22.BackColor = ShiftOSDesktop.artpadcolourpallets(21);
colourpallet23.BackColor = ShiftOSDesktop.artpadcolourpallets(22);
colourpallet24.BackColor = ShiftOSDesktop.artpadcolourpallets(23);
colourpallet25.BackColor = ShiftOSDesktop.artpadcolourpallets(24);
colourpallet26.BackColor = ShiftOSDesktop.artpadcolourpallets(25);
colourpallet27.BackColor = ShiftOSDesktop.artpadcolourpallets(26);
colourpallet28.BackColor = ShiftOSDesktop.artpadcolourpallets(27);
colourpallet29.BackColor = ShiftOSDesktop.artpadcolourpallets(28);
colourpallet30.BackColor = ShiftOSDesktop.artpadcolourpallets(29);
colourpallet31.BackColor = ShiftOSDesktop.artpadcolourpallets(30);
colourpallet32.BackColor = ShiftOSDesktop.artpadcolourpallets(31);
colourpallet33.BackColor = ShiftOSDesktop.artpadcolourpallets(32);
colourpallet34.BackColor = ShiftOSDesktop.artpadcolourpallets(33);
colourpallet35.BackColor = ShiftOSDesktop.artpadcolourpallets(34);
colourpallet36.BackColor = ShiftOSDesktop.artpadcolourpallets(35);
colourpallet37.BackColor = ShiftOSDesktop.artpadcolourpallets(36);
colourpallet38.BackColor = ShiftOSDesktop.artpadcolourpallets(37);
colourpallet39.BackColor = ShiftOSDesktop.artpadcolourpallets(38);
colourpallet40.BackColor = ShiftOSDesktop.artpadcolourpallets(39);
colourpallet41.BackColor = ShiftOSDesktop.artpadcolourpallets(40);
colourpallet42.BackColor = ShiftOSDesktop.artpadcolourpallets(41);
colourpallet43.BackColor = ShiftOSDesktop.artpadcolourpallets(42);
colourpallet44.BackColor = ShiftOSDesktop.artpadcolourpallets(43);
colourpallet45.BackColor = ShiftOSDesktop.artpadcolourpallets(44);
colourpallet46.BackColor = ShiftOSDesktop.artpadcolourpallets(45);
colourpallet47.BackColor = ShiftOSDesktop.artpadcolourpallets(46);
colourpallet48.BackColor = ShiftOSDesktop.artpadcolourpallets(47);
colourpallet49.BackColor = ShiftOSDesktop.artpadcolourpallets(48);
colourpallet50.BackColor = ShiftOSDesktop.artpadcolourpallets(49);
colourpallet51.BackColor = ShiftOSDesktop.artpadcolourpallets(50);
colourpallet52.BackColor = ShiftOSDesktop.artpadcolourpallets(51);
colourpallet53.BackColor = ShiftOSDesktop.artpadcolourpallets(52);
colourpallet54.BackColor = ShiftOSDesktop.artpadcolourpallets(53);
colourpallet55.BackColor = ShiftOSDesktop.artpadcolourpallets(54);
colourpallet56.BackColor = ShiftOSDesktop.artpadcolourpallets(55);
colourpallet57.BackColor = ShiftOSDesktop.artpadcolourpallets(56);
colourpallet58.BackColor = ShiftOSDesktop.artpadcolourpallets(57);
colourpallet59.BackColor = ShiftOSDesktop.artpadcolourpallets(58);
colourpallet60.BackColor = ShiftOSDesktop.artpadcolourpallets(59);
colourpallet61.BackColor = ShiftOSDesktop.artpadcolourpallets(60);
colourpallet62.BackColor = ShiftOSDesktop.artpadcolourpallets(61);
colourpallet63.BackColor = ShiftOSDesktop.artpadcolourpallets(62);
colourpallet64.BackColor = ShiftOSDesktop.artpadcolourpallets(63);
colourpallet65.BackColor = ShiftOSDesktop.artpadcolourpallets(64);
colourpallet66.BackColor = ShiftOSDesktop.artpadcolourpallets(65);
colourpallet67.BackColor = ShiftOSDesktop.artpadcolourpallets(66);
colourpallet68.BackColor = ShiftOSDesktop.artpadcolourpallets(67);
colourpallet69.BackColor = ShiftOSDesktop.artpadcolourpallets(68);
colourpallet70.BackColor = ShiftOSDesktop.artpadcolourpallets(69);
colourpallet71.BackColor = ShiftOSDesktop.artpadcolourpallets(70);
colourpallet72.BackColor = ShiftOSDesktop.artpadcolourpallets(71);
colourpallet73.BackColor = ShiftOSDesktop.artpadcolourpallets(72);
colourpallet74.BackColor = ShiftOSDesktop.artpadcolourpallets(73);
colourpallet75.BackColor = ShiftOSDesktop.artpadcolourpallets(74);
colourpallet76.BackColor = ShiftOSDesktop.artpadcolourpallets(75);
colourpallet77.BackColor = ShiftOSDesktop.artpadcolourpallets(76);
colourpallet78.BackColor = ShiftOSDesktop.artpadcolourpallets(77);
colourpallet79.BackColor = ShiftOSDesktop.artpadcolourpallets(78);
colourpallet80.BackColor = ShiftOSDesktop.artpadcolourpallets(79);
colourpallet81.BackColor = ShiftOSDesktop.artpadcolourpallets(80);
colourpallet82.BackColor = ShiftOSDesktop.artpadcolourpallets(81);
colourpallet83.BackColor = ShiftOSDesktop.artpadcolourpallets(82);
colourpallet84.BackColor = ShiftOSDesktop.artpadcolourpallets(83);
colourpallet85.BackColor = ShiftOSDesktop.artpadcolourpallets(84);
colourpallet86.BackColor = ShiftOSDesktop.artpadcolourpallets(85);
colourpallet87.BackColor = ShiftOSDesktop.artpadcolourpallets(86);
colourpallet88.BackColor = ShiftOSDesktop.artpadcolourpallets(87);
colourpallet89.BackColor = ShiftOSDesktop.artpadcolourpallets(88);
colourpallet90.BackColor = ShiftOSDesktop.artpadcolourpallets(89);
colourpallet91.BackColor = ShiftOSDesktop.artpadcolourpallets(90);
colourpallet92.BackColor = ShiftOSDesktop.artpadcolourpallets(91);
colourpallet93.BackColor = ShiftOSDesktop.artpadcolourpallets(92);
colourpallet94.BackColor = ShiftOSDesktop.artpadcolourpallets(93);
colourpallet95.BackColor = ShiftOSDesktop.artpadcolourpallets(94);
colourpallet96.BackColor = ShiftOSDesktop.artpadcolourpallets(95);
colourpallet97.BackColor = ShiftOSDesktop.artpadcolourpallets(96);
colourpallet98.BackColor = ShiftOSDesktop.artpadcolourpallets(97);
colourpallet99.BackColor = ShiftOSDesktop.artpadcolourpallets(98);
colourpallet100.BackColor = ShiftOSDesktop.artpadcolourpallets(99);
colourpallet101.BackColor = ShiftOSDesktop.artpadcolourpallets(100);
colourpallet102.BackColor = ShiftOSDesktop.artpadcolourpallets(101);
colourpallet103.BackColor = ShiftOSDesktop.artpadcolourpallets(102);
colourpallet104.BackColor = ShiftOSDesktop.artpadcolourpallets(103);
colourpallet105.BackColor = ShiftOSDesktop.artpadcolourpallets(104);
colourpallet106.BackColor = ShiftOSDesktop.artpadcolourpallets(105);
colourpallet107.BackColor = ShiftOSDesktop.artpadcolourpallets(106);
colourpallet108.BackColor = ShiftOSDesktop.artpadcolourpallets(107);
colourpallet109.BackColor = ShiftOSDesktop.artpadcolourpallets(108);
colourpallet110.BackColor = ShiftOSDesktop.artpadcolourpallets(109);
colourpallet111.BackColor = ShiftOSDesktop.artpadcolourpallets(110);
colourpallet112.BackColor = ShiftOSDesktop.artpadcolourpallets(111);
colourpallet113.BackColor = ShiftOSDesktop.artpadcolourpallets(112);
colourpallet114.BackColor = ShiftOSDesktop.artpadcolourpallets(113);
colourpallet115.BackColor = ShiftOSDesktop.artpadcolourpallets(114);
colourpallet116.BackColor = ShiftOSDesktop.artpadcolourpallets(115);
colourpallet117.BackColor = ShiftOSDesktop.artpadcolourpallets(116);
colourpallet118.BackColor = ShiftOSDesktop.artpadcolourpallets(117);
colourpallet119.BackColor = ShiftOSDesktop.artpadcolourpallets(118);
colourpallet120.BackColor = ShiftOSDesktop.artpadcolourpallets(119);
colourpallet121.BackColor = ShiftOSDesktop.artpadcolourpallets(120);
colourpallet122.BackColor = ShiftOSDesktop.artpadcolourpallets(121);
colourpallet123.BackColor = ShiftOSDesktop.artpadcolourpallets(122);
colourpallet124.BackColor = ShiftOSDesktop.artpadcolourpallets(123);
colourpallet125.BackColor = ShiftOSDesktop.artpadcolourpallets(124);
colourpallet126.BackColor = ShiftOSDesktop.artpadcolourpallets(125);
colourpallet127.BackColor = ShiftOSDesktop.artpadcolourpallets(126);
colourpallet128.BackColor = ShiftOSDesktop.artpadcolourpallets(127);
*/}
public void savecolors()
{/*
ShiftOSDesktop.artpadcolourpallets(0) = colourpallet1.BackColor;
ShiftOSDesktop.artpadcolourpallets(1) = colourpallet2.BackColor;
ShiftOSDesktop.artpadcolourpallets(2) = colourpallet3.BackColor;
ShiftOSDesktop.artpadcolourpallets(3) = colourpallet4.BackColor;
ShiftOSDesktop.artpadcolourpallets(4) = colourpallet5.BackColor;
ShiftOSDesktop.artpadcolourpallets(5) = colourpallet6.BackColor;
ShiftOSDesktop.artpadcolourpallets(6) = colourpallet7.BackColor;
ShiftOSDesktop.artpadcolourpallets(7) = colourpallet8.BackColor;
ShiftOSDesktop.artpadcolourpallets(8) = colourpallet9.BackColor;
ShiftOSDesktop.artpadcolourpallets(9) = colourpallet10.BackColor;
ShiftOSDesktop.artpadcolourpallets(10) = colourpallet11.BackColor;
ShiftOSDesktop.artpadcolourpallets(11) = colourpallet12.BackColor;
ShiftOSDesktop.artpadcolourpallets(12) = colourpallet13.BackColor;
ShiftOSDesktop.artpadcolourpallets(13) = colourpallet14.BackColor;
ShiftOSDesktop.artpadcolourpallets(14) = colourpallet15.BackColor;
ShiftOSDesktop.artpadcolourpallets(15) = colourpallet16.BackColor;
ShiftOSDesktop.artpadcolourpallets(16) = colourpallet17.BackColor;
ShiftOSDesktop.artpadcolourpallets(17) = colourpallet18.BackColor;
ShiftOSDesktop.artpadcolourpallets(18) = colourpallet19.BackColor;
ShiftOSDesktop.artpadcolourpallets(19) = colourpallet20.BackColor;
ShiftOSDesktop.artpadcolourpallets(20) = colourpallet21.BackColor;
ShiftOSDesktop.artpadcolourpallets(21) = colourpallet22.BackColor;
ShiftOSDesktop.artpadcolourpallets(22) = colourpallet23.BackColor;
ShiftOSDesktop.artpadcolourpallets(23) = colourpallet24.BackColor;
ShiftOSDesktop.artpadcolourpallets(24) = colourpallet25.BackColor;
ShiftOSDesktop.artpadcolourpallets(25) = colourpallet26.BackColor;
ShiftOSDesktop.artpadcolourpallets(26) = colourpallet27.BackColor;
ShiftOSDesktop.artpadcolourpallets(27) = colourpallet28.BackColor;
ShiftOSDesktop.artpadcolourpallets(28) = colourpallet29.BackColor;
ShiftOSDesktop.artpadcolourpallets(29) = colourpallet30.BackColor;
ShiftOSDesktop.artpadcolourpallets(30) = colourpallet31.BackColor;
ShiftOSDesktop.artpadcolourpallets(31) = colourpallet32.BackColor;
ShiftOSDesktop.artpadcolourpallets(32) = colourpallet33.BackColor;
ShiftOSDesktop.artpadcolourpallets(33) = colourpallet34.BackColor;
ShiftOSDesktop.artpadcolourpallets(34) = colourpallet35.BackColor;
ShiftOSDesktop.artpadcolourpallets(35) = colourpallet36.BackColor;
ShiftOSDesktop.artpadcolourpallets(36) = colourpallet37.BackColor;
ShiftOSDesktop.artpadcolourpallets(37) = colourpallet38.BackColor;
ShiftOSDesktop.artpadcolourpallets(38) = colourpallet39.BackColor;
ShiftOSDesktop.artpadcolourpallets(39) = colourpallet40.BackColor;
ShiftOSDesktop.artpadcolourpallets(40) = colourpallet41.BackColor;
ShiftOSDesktop.artpadcolourpallets(41) = colourpallet42.BackColor;
ShiftOSDesktop.artpadcolourpallets(42) = colourpallet43.BackColor;
ShiftOSDesktop.artpadcolourpallets(43) = colourpallet44.BackColor;
ShiftOSDesktop.artpadcolourpallets(44) = colourpallet45.BackColor;
ShiftOSDesktop.artpadcolourpallets(45) = colourpallet46.BackColor;
ShiftOSDesktop.artpadcolourpallets(46) = colourpallet47.BackColor;
ShiftOSDesktop.artpadcolourpallets(47) = colourpallet48.BackColor;
ShiftOSDesktop.artpadcolourpallets(48) = colourpallet49.BackColor;
ShiftOSDesktop.artpadcolourpallets(49) = colourpallet50.BackColor;
ShiftOSDesktop.artpadcolourpallets(50) = colourpallet51.BackColor;
ShiftOSDesktop.artpadcolourpallets(51) = colourpallet52.BackColor;
ShiftOSDesktop.artpadcolourpallets(52) = colourpallet53.BackColor;
ShiftOSDesktop.artpadcolourpallets(53) = colourpallet54.BackColor;
ShiftOSDesktop.artpadcolourpallets(54) = colourpallet55.BackColor;
ShiftOSDesktop.artpadcolourpallets(55) = colourpallet56.BackColor;
ShiftOSDesktop.artpadcolourpallets(56) = colourpallet57.BackColor;
ShiftOSDesktop.artpadcolourpallets(57) = colourpallet58.BackColor;
ShiftOSDesktop.artpadcolourpallets(58) = colourpallet59.BackColor;
ShiftOSDesktop.artpadcolourpallets(59) = colourpallet60.BackColor;
ShiftOSDesktop.artpadcolourpallets(60) = colourpallet61.BackColor;
ShiftOSDesktop.artpadcolourpallets(61) = colourpallet62.BackColor;
ShiftOSDesktop.artpadcolourpallets(62) = colourpallet63.BackColor;
ShiftOSDesktop.artpadcolourpallets(63) = colourpallet64.BackColor;
ShiftOSDesktop.artpadcolourpallets(64) = colourpallet65.BackColor;
ShiftOSDesktop.artpadcolourpallets(65) = colourpallet66.BackColor;
ShiftOSDesktop.artpadcolourpallets(66) = colourpallet67.BackColor;
ShiftOSDesktop.artpadcolourpallets(67) = colourpallet68.BackColor;
ShiftOSDesktop.artpadcolourpallets(68) = colourpallet69.BackColor;
ShiftOSDesktop.artpadcolourpallets(69) = colourpallet70.BackColor;
ShiftOSDesktop.artpadcolourpallets(70) = colourpallet71.BackColor;
ShiftOSDesktop.artpadcolourpallets(71) = colourpallet72.BackColor;
ShiftOSDesktop.artpadcolourpallets(72) = colourpallet73.BackColor;
ShiftOSDesktop.artpadcolourpallets(73) = colourpallet74.BackColor;
ShiftOSDesktop.artpadcolourpallets(74) = colourpallet75.BackColor;
ShiftOSDesktop.artpadcolourpallets(75) = colourpallet76.BackColor;
ShiftOSDesktop.artpadcolourpallets(76) = colourpallet77.BackColor;
ShiftOSDesktop.artpadcolourpallets(77) = colourpallet78.BackColor;
ShiftOSDesktop.artpadcolourpallets(78) = colourpallet79.BackColor;
ShiftOSDesktop.artpadcolourpallets(79) = colourpallet80.BackColor;
ShiftOSDesktop.artpadcolourpallets(80) = colourpallet81.BackColor;
ShiftOSDesktop.artpadcolourpallets(81) = colourpallet82.BackColor;
ShiftOSDesktop.artpadcolourpallets(82) = colourpallet83.BackColor;
ShiftOSDesktop.artpadcolourpallets(83) = colourpallet84.BackColor;
ShiftOSDesktop.artpadcolourpallets(84) = colourpallet85.BackColor;
ShiftOSDesktop.artpadcolourpallets(85) = colourpallet86.BackColor;
ShiftOSDesktop.artpadcolourpallets(86) = colourpallet87.BackColor;
ShiftOSDesktop.artpadcolourpallets(87) = colourpallet88.BackColor;
ShiftOSDesktop.artpadcolourpallets(88) = colourpallet89.BackColor;
ShiftOSDesktop.artpadcolourpallets(89) = colourpallet90.BackColor;
ShiftOSDesktop.artpadcolourpallets(90) = colourpallet91.BackColor;
ShiftOSDesktop.artpadcolourpallets(91) = colourpallet92.BackColor;
ShiftOSDesktop.artpadcolourpallets(92) = colourpallet93.BackColor;
ShiftOSDesktop.artpadcolourpallets(93) = colourpallet94.BackColor;
ShiftOSDesktop.artpadcolourpallets(94) = colourpallet95.BackColor;
ShiftOSDesktop.artpadcolourpallets(95) = colourpallet96.BackColor;
ShiftOSDesktop.artpadcolourpallets(96) = colourpallet97.BackColor;
ShiftOSDesktop.artpadcolourpallets(97) = colourpallet98.BackColor;
ShiftOSDesktop.artpadcolourpallets(98) = colourpallet99.BackColor;
ShiftOSDesktop.artpadcolourpallets(99) = colourpallet100.BackColor;
ShiftOSDesktop.artpadcolourpallets(100) = colourpallet101.BackColor;
ShiftOSDesktop.artpadcolourpallets(101) = colourpallet102.BackColor;
ShiftOSDesktop.artpadcolourpallets(102) = colourpallet103.BackColor;
ShiftOSDesktop.artpadcolourpallets(103) = colourpallet104.BackColor;
ShiftOSDesktop.artpadcolourpallets(104) = colourpallet105.BackColor;
ShiftOSDesktop.artpadcolourpallets(105) = colourpallet106.BackColor;
ShiftOSDesktop.artpadcolourpallets(106) = colourpallet107.BackColor;
ShiftOSDesktop.artpadcolourpallets(107) = colourpallet108.BackColor;
ShiftOSDesktop.artpadcolourpallets(108) = colourpallet109.BackColor;
ShiftOSDesktop.artpadcolourpallets(109) = colourpallet110.BackColor;
ShiftOSDesktop.artpadcolourpallets(110) = colourpallet111.BackColor;
ShiftOSDesktop.artpadcolourpallets(111) = colourpallet112.BackColor;
ShiftOSDesktop.artpadcolourpallets(112) = colourpallet113.BackColor;
ShiftOSDesktop.artpadcolourpallets(113) = colourpallet114.BackColor;
ShiftOSDesktop.artpadcolourpallets(114) = colourpallet115.BackColor;
ShiftOSDesktop.artpadcolourpallets(115) = colourpallet116.BackColor;
ShiftOSDesktop.artpadcolourpallets(116) = colourpallet117.BackColor;
ShiftOSDesktop.artpadcolourpallets(117) = colourpallet118.BackColor;
ShiftOSDesktop.artpadcolourpallets(118) = colourpallet119.BackColor;
ShiftOSDesktop.artpadcolourpallets(119) = colourpallet120.BackColor;
ShiftOSDesktop.artpadcolourpallets(120) = colourpallet121.BackColor;
ShiftOSDesktop.artpadcolourpallets(121) = colourpallet122.BackColor;
ShiftOSDesktop.artpadcolourpallets(122) = colourpallet123.BackColor;
ShiftOSDesktop.artpadcolourpallets(123) = colourpallet124.BackColor;
ShiftOSDesktop.artpadcolourpallets(124) = colourpallet125.BackColor;
ShiftOSDesktop.artpadcolourpallets(125) = colourpallet126.BackColor;
ShiftOSDesktop.artpadcolourpallets(126) = colourpallet127.BackColor;
ShiftOSDesktop.artpadcolourpallets(127) = colourpallet128.BackColor;
*/}
//</unused>
public void settoolcolours()
{
btnpixelsetter.BackColor = drawingcolour;
btnpixelplacer.BackColor = drawingcolour;
btnpencil.BackColor = drawingcolour;
btnfloodfill.BackColor = drawingcolour;
btnsquare.BackColor = drawingcolour;
btnoval.BackColor = drawingcolour;
btnlinetool.BackColor = drawingcolour;
btnpaintbrush.BackColor = drawingcolour;
btntexttool.BackColor = drawingcolour;
}
#endregion
#region Zooming
// ERROR: Handles clauses are not supported in C#
private void btnzoomin_Click(object sender, EventArgs e)
{
if (magnificationlevel < 256)
{
magnificationlevel *= 2;
}
else {
API.CreateInfoboxSession("ArtPad - Magnification Error!"
, "You are unable to increase the magnification level any further." + Environment.NewLine + Environment.NewLine + "256x is the highest level of magnification supported by ArtPad!", infobox.InfoboxMode.Info);
}
setmagnification();
}
// ERROR: Handles clauses are not supported in C#
private void btnzoomout_Click(object sender, EventArgs e)
{
if (magnificationlevel > 1)
{
magnificationlevel /= 2;
pnldrawingbackground.AutoScrollPosition = new Point(0, 0);
}
else {
API.CreateInfoboxSession("ArtPad - Magnification Error!"
,"You are unable to decrease the magnification level any further." + Environment.NewLine + Environment.NewLine + "Artpad is unable to scale pixels at a level smaller than their actual size!", infobox.InfoboxMode.Info);
}
setmagnification();
}
private void setmagnification()
{
magnifyRect.Width = (int)canvaswidth / magnificationlevel;
magnifyRect.Height = (int)canvasheight / magnificationlevel;
picdrawingdisplay.Size = new Size(canvaswidth * magnificationlevel, canvasheight * magnificationlevel);
if (picdrawingdisplay.Height > 468 && picdrawingdisplay.Width > 676)
{
picdrawingdisplay.Location = new Point(0, 0);
}
else {
picdrawingdisplay.Location = new Point((pnldrawingbackground.Width - canvaswidth * magnificationlevel) / 2, (pnldrawingbackground.Height - canvasheight * magnificationlevel) / 2);
}
picdrawingdisplay.Invalidate();
lblzoomlevel.Text = magnificationlevel + "X";
}
#endregion
#region Pixel Placer
// ERROR: Handles clauses are not supported in C#
private void pnlpixelplacer_Click(object sender, EventArgs e)
{
selectedtool = "Pixel Placer";
gettoolsettings(pnlpixelplacersettings);
}
// ERROR: Handles clauses are not supported in C#
private void btnpixelplacermovementmode_Click(object sender, EventArgs e)
{
if (pixalplacermovable == false)
{
pixalplacermovable = true;
btnpixelplacermovementmode.ForeColor = Color.White;
btnpixelplacermovementmode.BackColor = Color.Black;
btnpixelplacermovementmode.Text = "Deactivate Movement Mode";
lblpixelplacerhelp.Text = "Movement mode is enabled. Click and drag on the canvas to place pixels as you move the mouse. Please use 4x magnification or greater and move the mouse very slowly.";
}
else {
pixalplacermovable = false;
btnpixelplacermovementmode.ForeColor = Color.Black;
btnpixelplacermovementmode.BackColor = Color.White;
btnpixelplacermovementmode.Text = "Activate Movement Mode";
lblpixelplacerhelp.Text = "This tool does not contain any alterable settings. Simply click on the canvas and a pixel will be placed in the spot you click.";
}
}
#endregion
#region Saving
// ERROR: Handles clauses are not supported in C#
private void btnsave_Click(object sender, EventArgs e)
{
showsavedialog();
}
public void showsavedialog()
{
API.CreateFileSkimmerSession(".pic", File_Skimmer.FileSkimmerMode.Save);
API.FileSkimmerSession.FormClosing += (object s, FormClosingEventArgs a) =>
{
var res = API.GetFSResult();
if(res != "fail")
{
savelocation = res;
saveimage();
}
};
}
public void saveimage()
{
canvasbitmap.Save(savelocation, ImageFormat.Bmp);
}
#endregion
#region New Canvas
// ERROR: Handles clauses are not supported in C#
private void txtnewcanvaswidth_TextChanged(object sender, EventArgs e)
{
if (txtnewcanvaswidth.Text == "" | txtnewcanvasheight.Text == "")
{
if(txtnewcanvasheight.Text == "")
{
txtnewcanvasheight.Text = "0";
}
if (txtnewcanvaswidth.Text == "")
{
txtnewcanvaswidth.Text = "0";
}
}
else {
try {
lbltotalpixels.Text = (Convert.ToInt32(txtnewcanvaswidth.Text) * Convert.ToInt32(txtnewcanvasheight.Text)).ToString();
if (API.Upgrades["artpadlimitlesspixels"] == true)
{
lbltotalpixels.ForeColor = Color.Black;
}
else {
if ((Convert.ToInt32(txtnewcanvaswidth.Text) * Convert.ToInt32(txtnewcanvasheight.Text)) > GetPixelLimit())
{
lbltotalpixels.ForeColor = Color.Red;
}
else {
lbltotalpixels.ForeColor = Color.Black;
}
}
}
catch(Exception ex)
{
}
}
}
public int GetPixelLimit()
{
int value = 2;
if(API.Upgrades["artpadpixellimit4"])
{
value = 4;
if (API.Upgrades["artpadpixellimit8"])
{
value = 8;
if (API.Upgrades["artpadpixellimit16"])
{
value = 16;
if (API.Upgrades["artpadpixellimit64"])
{
value = 64;
if (API.Upgrades["artpadpixellimit256"])
{
value = 256;
if (API.Upgrades["artpadpixellimit1024"])
{
value = 1024;
if (API.Upgrades["artpadpixellimit4096"])
{
value = 4096;
if (API.Upgrades["artpadpixellimit16384"])
{
value = 16384;
if (API.Upgrades["artpadpixellimit65536"])
{
value = 65536;
}
}
}
}
}
}
}
}
}
return value;
}
// ERROR: Handles clauses are not supported in C#
private void btncreate_Click(object sender, EventArgs e)
{
if (lbltotalpixels.ForeColor == Color.Red)
{
API.CreateInfoboxSession("Artpad - Error", "Artpad cannot create the image. It is too big.", infobox.InfoboxMode.Info);
}
else {
if (lbltotalpixels.Text == "0")
{
}
else {
canvaswidth = Convert.ToInt32(txtnewcanvaswidth.Text);
canvasheight = Convert.ToInt32(txtnewcanvasheight.Text);
picdrawingdisplay.Show();
setupcanvas();
pnlinitialcanvassettings.Hide();
}
}
}
// ERROR: Handles clauses are not supported in C#
private void btncancel_Click(object sender, EventArgs e)
{
pnlinitialcanvassettings.Hide();
picdrawingdisplay.Show();
}
// ERROR: Handles clauses are not supported in C#
private void btnnew_Click(object sender, EventArgs e)
{
pnlinitialcanvassettings.Show();
picdrawingdisplay.Hide();
}
#endregion
#region Preview
public void setuppreview()
{
lbltoolselected.Text = selectedtool;
picpreview.CreateGraphics().FillRectangle(Brushes.White, 0, 0, 70, 50);
switch (selectedtool)
{
case "Square Tool":
var CurrentPen = new Pen(Color.FromArgb(255, drawingcolour), squarewidth);
var CurrentBrush = new SolidBrush(Color.FromArgb(255, fillsquarecolor));
RectangleF rectdraw = new RectangleF(0, 0, picpreview.Width, picpreview.Height);
float correctionamount = squarewidth / 2;
if (squarewidth > 0)
{
picpreview.CreateGraphics().DrawRectangle(CurrentPen, rectdraw.X + correctionamount, rectdraw.Y + correctionamount, rectdraw.Width - squarewidth, rectdraw.Height - squarewidth);
}
if (squarefillon == true)
{
picpreview.CreateGraphics().FillRectangle(CurrentBrush, rectdraw.X + squarewidth, rectdraw.Y + squarewidth, rectdraw.Width - squarewidth - squarewidth, rectdraw.Height - squarewidth - squarewidth);
}
break;
case "Oval Tool":
var ovalCurrentPen = new Pen(Color.FromArgb(255, drawingcolour), ovalwidth);
var ovalCurrentBrush = new SolidBrush(Color.FromArgb(255, fillovalcolor));
RectangleF ovalrectdraw = new RectangleF(0, 0, picpreview.Width, picpreview.Height);
float ovalcorrectionamount = ovalwidth / 2;
if (ovalwidth > 0)
{
picpreview.CreateGraphics().DrawEllipse(ovalCurrentPen, ovalrectdraw.X + ovalcorrectionamount, ovalrectdraw.Y + ovalcorrectionamount, ovalrectdraw.Width - ovalwidth, ovalrectdraw.Height - ovalwidth);
}
if (ovalfillon == true)
{
float fixer = ovalwidth / 2;
picpreview.CreateGraphics().FillEllipse(ovalCurrentBrush, (ovalrectdraw.X + fixer), (ovalrectdraw.Y + fixer), ovalrectdraw.Width - fixer - fixer, ovalrectdraw.Height - fixer - fixer);
}
break;
case "Text Tool":
var textCurrentBrush = new SolidBrush(Color.FromArgb(255, drawingcolour));
drawtextfont = new System.Drawing.Font(drawtextfontname, 20, drawtextfontstyle);
picpreview.CreateGraphics().DrawString("A", drawtextfont, textCurrentBrush, 20, 0);
break;
case "Line Tool":
var lineCurrentPen = new Pen(Color.FromArgb(255, drawingcolour), linewidth);
picpreview.CreateGraphics().DrawLine(lineCurrentPen, 0, 0, picpreview.Width, picpreview.Height);
break;
case "Pencil":
var pencilCurrentPen = new Pen(Color.FromArgb(255, drawingcolour), pencilwidth);
picpreview.CreateGraphics().DrawLine(pencilCurrentPen, 0, 25, picpreview.Width, 25);
break;
case "Paint Brush":
var pbCurrentBrush = new SolidBrush(Color.FromArgb(255, drawingcolour));
float halfsize = paintbrushwidth / 2;
float halfwidth = picdrawingdisplay.Width / 2;
float halfheight = picdrawingdisplay.Height / 2;
if (paintbrushtype == "circle")
{
picpreview.CreateGraphics().FillEllipse(pbCurrentBrush, halfwidth - 15 - halfsize, halfheight - 1 - halfsize, paintbrushwidth, paintbrushwidth);
}
else {
picpreview.CreateGraphics().FillRectangle(pbCurrentBrush, halfwidth - 15 - halfsize, halfheight - 1 - halfsize, paintbrushwidth, paintbrushwidth);
}
break;
case "Eracer":
System.Drawing.SolidBrush drawbrush = new System.Drawing.SolidBrush(drawingcolour);
picpreview.CreateGraphics().FillRectangle(drawbrush, 0, 0, picpreview.Width, picpreview.Height);
var eCurrentBrush = new SolidBrush(Color.FromArgb(255, Color.White));
float ehalfsize = eracerwidth / 2;
float ehalfwidth = picdrawingdisplay.Width / 2;
float ehalfheight = picdrawingdisplay.Height / 2;
if (eracertype == "circle")
{
picpreview.CreateGraphics().FillEllipse(eCurrentBrush, ehalfwidth - 15 - ehalfsize, ehalfheight - ehalfsize, eracerwidth, eracerwidth);
}
else {
picpreview.CreateGraphics().FillRectangle(eCurrentBrush, ehalfwidth - 15 - ehalfsize, ehalfheight - ehalfsize, eracerwidth, eracerwidth);
}
break;
default:
System.Drawing.SolidBrush ddrawbrush = new System.Drawing.SolidBrush(drawingcolour);
picpreview.CreateGraphics().FillRectangle(ddrawbrush, 0, 0, picpreview.Width, picpreview.Height);
ddrawbrush.Dispose();
break;
}
}
#endregion
#region Pencil
// ERROR: Handles clauses are not supported in C#
private void btnpencil_Click(object sender, EventArgs e)
{
selectedtool = "Pencil";
gettoolsettings(pnlpencilsettings);
}
// ERROR: Handles clauses are not supported in C#
private void ChangePencilSize(object sender, EventArgs e)
{
var s = (Control)sender;
switch (s.Name.ToString())
{
case "btnpencilsize1":
pencilwidth = 1;
break;
case "btnpencilsize2":
pencilwidth = 2;
break;
case "btnpencilsize3":
pencilwidth = 3;
break;
}
setuppreview();
}
#endregion
#region Undo/Redo
// ERROR: Handles clauses are not supported in C#
private void btnundo_Click(object sender, EventArgs e)
{
try
{
undo.redoStack.Push((Image)canvasbitmap.Clone());
canvasbitmap = (Bitmap)undo.undoStack.Pop();
graphicsbitmap = Graphics.FromImage(canvasbitmap);
picdrawingdisplay.Invalidate();
}
catch (Exception ex)
{
API.CreateInfoboxSession("ArtPad - Undo Error!"
,"There doesn't appear to be any more actions to undo." + Environment.NewLine + Environment.NewLine + "One more step back would undo the creation of the canvas. If this is your goal just click new.", infobox.InfoboxMode.Info);
}
}
// ERROR: Handles clauses are not supported in C#
private void btnredo_Click(object sender, EventArgs e)
{
try
{
undo.undoStack.Push((Image)canvasbitmap.Clone());
canvasbitmap = (Bitmap)undo.redoStack.Pop();
graphicsbitmap = Graphics.FromImage(canvasbitmap);
picdrawingdisplay.Invalidate();
}
catch (Exception ex)
{
API.CreateInfoboxSession("ArtPad - Redo Error!"
, "There doesn't appear to be any more actions to redo." + Environment.NewLine + Environment.NewLine + "If you have drawn on the canvas recently all future history would have been wiped!", infobox.InfoboxMode.Info);
}
}
#endregion
#region File Loading
// ERROR: Handles clauses are not supported in C#
private void btnopen_Click(object sender, EventArgs e)
{
API.CreateFileSkimmerSession(".pic", File_Skimmer.FileSkimmerMode.Open);
API.FileSkimmerSession.FormClosing += (object s, FormClosingEventArgs a) =>
{
string res = API.GetFSResult();
if(res != "fail")
{
savelocation = res;
openpic();
}
};
}
public void openpic()
{
pnlinitialcanvassettings.Hide();
picdrawingdisplay.Show();
magnificationlevel = 1;
setmagnification();
canvasbitmap = (Bitmap)Image.FromFile(savelocation);
canvasheight = canvasbitmap.Height;
canvaswidth = canvasbitmap.Width;
picdrawingdisplay.Size = new Size(canvaswidth, canvasheight);
picdrawingdisplay.Location = new Point((pnldrawingbackground.Width - canvaswidth) / 2, (pnldrawingbackground.Height - canvasheight) / 2);
graphicsbitmap = Graphics.FromImage(canvasbitmap);
picdrawingdisplay.Invalidate();
}
#endregion
#region Flood Fill
// Flood fill the point.
public void SafeFloodFill(Bitmap bm, int x, int y, Color new_color)
{
// Get the old and new colors.
Color old_color = bm.GetPixel(x, y);
// The following "If Then" test was added by Reuben
// Jollif
// to protect the code in case the start pixel
// has the same color as the fill color.
if (old_color.ToArgb() != new_color.ToArgb())
{
// Start with the original point in the stack.
Stack<Point> pts = new Stack<Point>(1000);
pts.Push(new Point(x, y));
bm.SetPixel(x, y, new_color);
// While the stack is not empty, process a point.
while (pts.Count > 0)
{
Point pt = (Point)pts.Pop();
if (pt.X > 0)
SafeCheckPoint(bm, pts, pt.X - 1, pt.Y, old_color, new_color);
if (pt.Y > 0)
SafeCheckPoint(bm, pts, pt.X, pt.Y - 1, old_color, new_color);
if (pt.X < bm.Width - 1)
SafeCheckPoint(bm, pts, pt.X + 1, pt.Y, old_color, new_color);
if (pt.Y < bm.Height - 1)
SafeCheckPoint(bm, pts, pt.X, pt.Y + 1, old_color, new_color);
}
}
}
// See if this point should be added to the stack.
private void SafeCheckPoint(Bitmap bm, Stack<Point> pts, int x, int y, Color old_color, Color new_color)
{
Color clr = bm.GetPixel(x, y);
if (clr.Equals(old_color))
{
pts.Push(new Point(x, y));
bm.SetPixel(x, y, new_color);
}
}
// ERROR: Handles clauses are not supported in C#
private void btnfill_Click(object sender, EventArgs e)
{
selectedtool = "Flood Fill";
gettoolsettings(pnlfloodfillsettings);
}
#endregion
#region Shapes
// ERROR: Handles clauses are not supported in C#
private void btnsquare_Click(object sender, EventArgs e)
{
selectedtool = "Square Tool";
gettoolsettings(pnlsquaretoolsettings);
txtsquareborderwidth.Text = squarewidth.ToString();
}
// ERROR: Handles clauses are not supported in C#
private void txtsquareborderwidth_TextChanged(object sender, EventArgs e)
{
if (txtsquareborderwidth.Text == "")
{
}
else {
squarewidth = (Convert.ToInt32(txtsquareborderwidth.Text));
setuppreview();
}
}
// ERROR: Handles clauses are not supported in C#
private void pnlsquarefillcolour_Click(object sender, EventArgs e)
{
pnlsquarefillcolour.BackColor = drawingcolour;
fillsquarecolor = drawingcolour;
setuppreview();
}
// ERROR: Handles clauses are not supported in C#
private void btnsquarefillonoff_Click(object sender, EventArgs e)
{
if (squarefillon == true)
{
btnsquarefillonoff.Text = "Fill OFF";
btnsquarefillonoff.BackColor = Color.White;
btnsquarefillonoff.ForeColor = Color.Black;
squarefillon = false;
}
else {
btnsquarefillonoff.Text = "Fill ON";
btnsquarefillonoff.BackColor = Color.Black;
btnsquarefillonoff.ForeColor = Color.White;
squarefillon = true;
}
txtsquareborderwidth.Text = squarewidth.ToString();
setuppreview();
}
// ERROR: Handles clauses are not supported in C#
private void btnoval_Click(object sender, EventArgs e)
{
selectedtool = "Oval Tool";
gettoolsettings(pnlovaltoolsettings);
txtovalborderwidth.Text = ovalwidth.ToString();
}
// ERROR: Handles clauses are not supported in C#
private void txtovalborderwidth_TextChanged(object sender, EventArgs e)
{
if (txtovalborderwidth.Text == "")
{
}
else {
ovalwidth = (Convert.ToInt32(txtovalborderwidth.Text));
setuppreview();
}
}
// ERROR: Handles clauses are not supported in C#
private void pnlovalfillcolour_Click(object sender, EventArgs e)
{
pnlovalfillcolour.BackColor = drawingcolour;
fillovalcolor = drawingcolour;
setuppreview();
}
// ERROR: Handles clauses are not supported in C#
private void btnovalfillonoff_Click(object sender, EventArgs e)
{
if (ovalfillon == true)
{
btnovalfillonoff.Text = "Fill OFF";
btnovalfillonoff.BackColor = Color.White;
btnovalfillonoff.ForeColor = Color.Black;
ovalfillon = false;
}
else {
btnovalfillonoff.Text = "Fill ON";
btnovalfillonoff.BackColor = Color.Black;
btnovalfillonoff.ForeColor = Color.White;
ovalfillon = true;
}
txtovalborderwidth.Text = ovalwidth.ToString();
setuppreview();
}
#endregion
#region Eraser
// ERROR: Handles clauses are not supported in C#
private void btneracer_Click(object sender, EventArgs e)
{
selectedtool = "Eracer";
gettoolsettings(pnleracertoolsettings);
txteracersize.Text = eracerwidth.ToString();
setuppreview();
}
// ERROR: Handles clauses are not supported in C#
private void txteracersize_TextChanged(object sender, EventArgs e)
{
if (txteracersize.Text == "")
{
}
else {
eracerwidth = (Convert.ToInt32(txteracersize.Text));
}
setuppreview();
}
// ERROR: Handles clauses are not supported in C#
private void btneracercircle_Click(object sender, EventArgs e)
{
eracertype = "circle";
btneracercircle.BackgroundImage = Properties.Resources.ArtPadcirclerubberselected;
btneracersquare.BackgroundImage = Properties.Resources.ArtPadsquarerubber;
setuppreview();
}
// ERROR: Handles clauses are not supported in C#
private void btneracersquare_Click(object sender, EventArgs e)
{
eracertype = "square";
btneracercircle.BackgroundImage = Properties.Resources.ArtPadcirclerubber;
btneracersquare.BackgroundImage = Properties.Resources.ArtPadsquarerubberselected;
setuppreview();
}
#endregion
#region Line
// ERROR: Handles clauses are not supported in C#
private void btnlinetool_Click(object sender, EventArgs e)
{
selectedtool = "Line Tool";
gettoolsettings(pnllinetoolsettings);
txtlinewidth.Text = linewidth.ToString();
}
// ERROR: Handles clauses are not supported in C#
private void txtlinewidth_TextChanged(object sender, EventArgs e)
{
if (txtlinewidth.Text == "")
{
}
else {
linewidth = (Convert.ToInt32(txtlinewidth.Text));
}
setuppreview();
}
#endregion
#region Text
// ERROR: Handles clauses are not supported in C#
private void btntexttool_Click(object sender, EventArgs e)
{
selectedtool = "Text Tool";
gettoolsettings(pnltexttoolsettings);
}
// ERROR: Handles clauses are not supported in C#
private void txtdrawtextsize_TextChanged(object sender, EventArgs e)
{
if (txtdrawtextsize.Text == "")
{
}
else {
drawtextsize = Convert.ToInt32(txtdrawtextsize.Text);
}
setuppreview();
}
// ERROR: Handles clauses are not supported in C#
private void combodrawtextfont_SelectedIndexChanged(object sender, EventArgs e)
{
drawtextfontname = combodrawtextfont.Text;
txtdrawstringtext.Focus();
setuppreview();
}
// ERROR: Handles clauses are not supported in C#
private void combofontstyle_SelectedIndexChanged(object sender, EventArgs e)
{
switch (combofontstyle.Text)
{
case "Bold":
drawtextfontstyle = FontStyle.Bold;
break;
case "Italic":
drawtextfontstyle = FontStyle.Italic;
break;
case "Regular":
drawtextfontstyle = FontStyle.Regular;
break;
case "Strikeout":
drawtextfontstyle = FontStyle.Strikeout;
break;
case "Underline":
drawtextfontstyle = FontStyle.Underline;
break;
}
txtdrawstringtext.Focus();
setuppreview();
}
#endregion
#region Paintbrush
// ERROR: Handles clauses are not supported in C#
private void txtpaintbrushsize_TextChanged(object sender, EventArgs e)
{
if (txtpaintbrushsize.Text == "")
{
}
else {
paintbrushwidth = (Convert.ToInt32(txtpaintbrushsize.Text));
}
setuppreview();
}
// ERROR: Handles clauses are not supported in C#
private void btnpaintsquareshape_Click(object sender, EventArgs e)
{
paintbrushtype = "square";
btnpaintcircleshape.BackgroundImage = Properties.Resources.ArtPadcirclerubber;
btnpaintsquareshape.BackgroundImage = Properties.Resources.ArtPadsquarerubberselected;
setuppreview();
}
// ERROR: Handles clauses are not supported in C#
private void btnpaintcircleshape_Click(object sender, EventArgs e)
{
paintbrushtype = "circle";
btnpaintcircleshape.BackgroundImage = Properties.Resources.ArtPadcirclerubberselected;
btnpaintsquareshape.BackgroundImage = Properties.Resources.ArtPadsquarerubber;
setuppreview();
}
// ERROR: Handles clauses are not supported in C#
private void btnpaintbrush_Click(object sender, EventArgs e)
{
selectedtool = "Paint Brush";
gettoolsettings(pnlpaintbrushtoolsettings);
txtpaintbrushsize.Text = paintbrushwidth.ToString();
setuppreview();
}
#endregion
#region Codepoints
private void preparecooldown()
{
needtosave = true;
if (codepointscooldown == true)
{
}
else {
codepointsearned = codepointsearned + 1;
codepointscooldown = true;
tmrcodepointcooldown.Start();
}
}
// ERROR: Handles clauses are not supported in C#
private void tmrcodepointcooldown_Tick(object sender, EventArgs e)
{
codepointscooldown = false;
tmrcodepointcooldown.Stop();
}
// ERROR: Handles clauses are not supported in C#
private void tmrshowearnedcodepoints_Tick(object sender, EventArgs e)
{
tmrshowearnedcodepoints.Stop();
}
#endregion
#region More UI stuff
public void determinevisiblepallets()
{
int panelstoadd = 2;
if (API.Upgrades["artpad4colorpallets"] == true)
{
panelstoadd = 4;
}
if (API.Upgrades["artpad8colorpallets"] == true)
{
panelstoadd = 8;
}
if (API.Upgrades["artpad16colorpallets"] == true)
{
panelstoadd = 16;
}
if (API.Upgrades["artpad32colorpallets"] == true)
{
panelstoadd = 32;
}
if (API.Upgrades["artpad64colorpallets"] == true)
{
panelstoadd = 64;
}
if (API.Upgrades["artpad128colorpallets"] == true)
{
panelstoadd = 128;
}
flowcolours.Controls.Clear();
for(int i = 0; i < panelstoadd; i++)
{
Panel pnl = new Panel();
pnl.BackColor = Color.Black;
pnl.Size = new Size(12, 8);
flowcolours.Controls.Add(pnl);
pnl.Margin = new Padding(1, 0, 0, 1);
pnl.MouseClick += new MouseEventHandler(this.colourpallet1_MouseClick);
pnl.Show();
}
}
// ERROR: Handles clauses are not supported in C#
private void btnchangesizecancel_Click(object sender, EventArgs e)
{
pnlpalletsize.Hide();
}
#endregion
#region More Text Stuff
// ERROR: Handles clauses are not supported in C#
private void txtdrawstringtext_TextChanged(object sender, EventArgs e)
{
setuppreview();
}
#endregion
private void tmrsetupui_Tick(object sender, EventArgs e)
{
if(API.CurrentSkin != null)
{
pnldrawingbackground.BackColor = API.CurrentSkin.titlebarcolour;
}
}
private void btnpixelplacer_Click(object sender, EventArgs e)
{
selectedtool = "Pixel Placer";
gettoolsettings(pnlpixelplacersettings);
}
}
}