/*
* MIT License
*
* Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
using ShiftOS.Objects.ShiftFS;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing.Text;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ShiftOS.WinForms.Tools;
using ShiftOS.Engine;
namespace ShiftOS.WinForms.Applications
{
[Launcher("Artpad", true, "al_artpad", "Graphics")]
[RequiresUpgrade("artpad")]
[WinOpen("artpad")]
[DefaultIcon("iconArtpad")]
public partial class Artpad : UserControl, IShiftOSWindow
{
///
/// artpad_'s GUI.
///
public Artpad()
{
try
{
InitializeComponent();
}
catch (Exception ex)
{
CrashHandler.Start(ex);
this.Close();
}
}
public void LoadPicture(string pic)
{
savelocation = pic;
this.openpic();
}
#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();
determinevisiblepalettes();
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 (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_placer") == true)
btnpixelplacer.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_pencil") == true)
btnpencil.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_fill_tool") == true)
btnfloodfill.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_oval_tool") == true)
btnoval.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_rectangle_tool") == true)
btnsquare.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_line_tool") == true)
btnlinetool.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_paintbrush") == true)
btnpaintbrush.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_text_tool") == true)
btntexttool.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_eraser") == true)
btneracer.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_new") == true)
btnnew.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_load") == true)
btnopen.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_save") == true)
btnsave.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_undo") == true)
btnundo.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_redo") == true)
btnredo.Show();
if (ShiftoriumFrontend.UpgradeInstalled("artpad_pp_movement_mode") == 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
{
Infobox.Show("{ARTPAD_PLACEMENT_ERROR}", "{ARTPAD_PLACEMENT_ERROR_EXP}");
}
}
// 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
{
}
}
// 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 colourpalette1_MouseClick(object sender, MouseEventArgs e)
{
var s = (Control)sender;
if (e.Button == MouseButtons.Left)
{
drawingcolour = s.BackColor;
setuppreview();
settoolcolours();
}
else
{
AppearanceManager.SetupDialog(new ColorPicker(s.BackColor, "artpad_ Color", new Action((color) => {
s.BackColor = color;
})));
}
}
//
public void loadcolors()
{
/*bool allwhite = true;
for (int i = 0; i <= 127; i++)
{
if (ShiftOSDesktop.artpad_colour_palettes(i) == null)
{
}
else {
allwhite = false;
}
}
if (allwhite == true)
{
for (i = 0; i <= 127; i++)
{
ShiftOSDesktop.artpad_colour_palettes(i) = Color.Black;
}
}
colourpalette1.BackColor = ShiftOSDesktop.artpad_colour_palettes(0);
colourpalette2.BackColor = ShiftOSDesktop.artpad_colour_palettes(1);
colourpalette3.BackColor = ShiftOSDesktop.artpad_colour_palettes(2);
colourpalette4.BackColor = ShiftOSDesktop.artpad_colour_palettes(3);
colourpalette5.BackColor = ShiftOSDesktop.artpad_colour_palettes(4);
colourpalette6.BackColor = ShiftOSDesktop.artpad_colour_palettes(5);
colourpalette7.BackColor = ShiftOSDesktop.artpad_colour_palettes(6);
colourpalette8.BackColor = ShiftOSDesktop.artpad_colour_palettes(7);
colourpalette9.BackColor = ShiftOSDesktop.artpad_colour_palettes(8);
colourpalette10.BackColor = ShiftOSDesktop.artpad_colour_palettes(9);
colourpalette11.BackColor = ShiftOSDesktop.artpad_colour_palettes(10);
colourpalette12.BackColor = ShiftOSDesktop.artpad_colour_palettes(11);
colourpalette13.BackColor = ShiftOSDesktop.artpad_colour_palettes(12);
colourpalette14.BackColor = ShiftOSDesktop.artpad_colour_palettes(13);
colourpalette15.BackColor = ShiftOSDesktop.artpad_colour_palettes(14);
colourpalette16.BackColor = ShiftOSDesktop.artpad_colour_palettes(15);
colourpalette17.BackColor = ShiftOSDesktop.artpad_colour_palettes(16);
colourpalette18.BackColor = ShiftOSDesktop.artpad_colour_palettes(17);
colourpalette19.BackColor = ShiftOSDesktop.artpad_colour_palettes(18);
colourpalette20.BackColor = ShiftOSDesktop.artpad_colour_palettes(19);
colourpalette21.BackColor = ShiftOSDesktop.artpad_colour_palettes(20);
colourpalette22.BackColor = ShiftOSDesktop.artpad_colour_palettes(21);
colourpalette23.BackColor = ShiftOSDesktop.artpad_colour_palettes(22);
colourpalette24.BackColor = ShiftOSDesktop.artpad_colour_palettes(23);
colourpalette25.BackColor = ShiftOSDesktop.artpad_colour_palettes(24);
colourpalette26.BackColor = ShiftOSDesktop.artpad_colour_palettes(25);
colourpalette27.BackColor = ShiftOSDesktop.artpad_colour_palettes(26);
colourpalette28.BackColor = ShiftOSDesktop.artpad_colour_palettes(27);
colourpalette29.BackColor = ShiftOSDesktop.artpad_colour_palettes(28);
colourpalette30.BackColor = ShiftOSDesktop.artpad_colour_palettes(29);
colourpalette31.BackColor = ShiftOSDesktop.artpad_colour_palettes(30);
colourpalette32.BackColor = ShiftOSDesktop.artpad_colour_palettes(31);
colourpalette33.BackColor = ShiftOSDesktop.artpad_colour_palettes(32);
colourpalette34.BackColor = ShiftOSDesktop.artpad_colour_palettes(33);
colourpalette35.BackColor = ShiftOSDesktop.artpad_colour_palettes(34);
colourpalette36.BackColor = ShiftOSDesktop.artpad_colour_palettes(35);
colourpalette37.BackColor = ShiftOSDesktop.artpad_colour_palettes(36);
colourpalette38.BackColor = ShiftOSDesktop.artpad_colour_palettes(37);
colourpalette39.BackColor = ShiftOSDesktop.artpad_colour_palettes(38);
colourpalette40.BackColor = ShiftOSDesktop.artpad_colour_palettes(39);
colourpalette41.BackColor = ShiftOSDesktop.artpad_colour_palettes(40);
colourpalette42.BackColor = ShiftOSDesktop.artpad_colour_palettes(41);
colourpalette43.BackColor = ShiftOSDesktop.artpad_colour_palettes(42);
colourpalette44.BackColor = ShiftOSDesktop.artpad_colour_palettes(43);
colourpalette45.BackColor = ShiftOSDesktop.artpad_colour_palettes(44);
colourpalette46.BackColor = ShiftOSDesktop.artpad_colour_palettes(45);
colourpalette47.BackColor = ShiftOSDesktop.artpad_colour_palettes(46);
colourpalette48.BackColor = ShiftOSDesktop.artpad_colour_palettes(47);
colourpalette49.BackColor = ShiftOSDesktop.artpad_colour_palettes(48);
colourpalette50.BackColor = ShiftOSDesktop.artpad_colour_palettes(49);
colourpalette51.BackColor = ShiftOSDesktop.artpad_colour_palettes(50);
colourpalette52.BackColor = ShiftOSDesktop.artpad_colour_palettes(51);
colourpalette53.BackColor = ShiftOSDesktop.artpad_colour_palettes(52);
colourpalette54.BackColor = ShiftOSDesktop.artpad_colour_palettes(53);
colourpalette55.BackColor = ShiftOSDesktop.artpad_colour_palettes(54);
colourpalette56.BackColor = ShiftOSDesktop.artpad_colour_palettes(55);
colourpalette57.BackColor = ShiftOSDesktop.artpad_colour_palettes(56);
colourpalette58.BackColor = ShiftOSDesktop.artpad_colour_palettes(57);
colourpalette59.BackColor = ShiftOSDesktop.artpad_colour_palettes(58);
colourpalette60.BackColor = ShiftOSDesktop.artpad_colour_palettes(59);
colourpalette61.BackColor = ShiftOSDesktop.artpad_colour_palettes(60);
colourpalette62.BackColor = ShiftOSDesktop.artpad_colour_palettes(61);
colourpalette63.BackColor = ShiftOSDesktop.artpad_colour_palettes(62);
colourpalette64.BackColor = ShiftOSDesktop.artpad_colour_palettes(63);
colourpalette65.BackColor = ShiftOSDesktop.artpad_colour_palettes(64);
colourpalette66.BackColor = ShiftOSDesktop.artpad_colour_palettes(65);
colourpalette67.BackColor = ShiftOSDesktop.artpad_colour_palettes(66);
colourpalette68.BackColor = ShiftOSDesktop.artpad_colour_palettes(67);
colourpalette69.BackColor = ShiftOSDesktop.artpad_colour_palettes(68);
colourpalette70.BackColor = ShiftOSDesktop.artpad_colour_palettes(69);
colourpalette71.BackColor = ShiftOSDesktop.artpad_colour_palettes(70);
colourpalette72.BackColor = ShiftOSDesktop.artpad_colour_palettes(71);
colourpalette73.BackColor = ShiftOSDesktop.artpad_colour_palettes(72);
colourpalette74.BackColor = ShiftOSDesktop.artpad_colour_palettes(73);
colourpalette75.BackColor = ShiftOSDesktop.artpad_colour_palettes(74);
colourpalette76.BackColor = ShiftOSDesktop.artpad_colour_palettes(75);
colourpalette77.BackColor = ShiftOSDesktop.artpad_colour_palettes(76);
colourpalette78.BackColor = ShiftOSDesktop.artpad_colour_palettes(77);
colourpalette79.BackColor = ShiftOSDesktop.artpad_colour_palettes(78);
colourpalette80.BackColor = ShiftOSDesktop.artpad_colour_palettes(79);
colourpalette81.BackColor = ShiftOSDesktop.artpad_colour_palettes(80);
colourpalette82.BackColor = ShiftOSDesktop.artpad_colour_palettes(81);
colourpalette83.BackColor = ShiftOSDesktop.artpad_colour_palettes(82);
colourpalette84.BackColor = ShiftOSDesktop.artpad_colour_palettes(83);
colourpalette85.BackColor = ShiftOSDesktop.artpad_colour_palettes(84);
colourpalette86.BackColor = ShiftOSDesktop.artpad_colour_palettes(85);
colourpalette87.BackColor = ShiftOSDesktop.artpad_colour_palettes(86);
colourpalette88.BackColor = ShiftOSDesktop.artpad_colour_palettes(87);
colourpalette89.BackColor = ShiftOSDesktop.artpad_colour_palettes(88);
colourpalette90.BackColor = ShiftOSDesktop.artpad_colour_palettes(89);
colourpalette91.BackColor = ShiftOSDesktop.artpad_colour_palettes(90);
colourpalette92.BackColor = ShiftOSDesktop.artpad_colour_palettes(91);
colourpalette93.BackColor = ShiftOSDesktop.artpad_colour_palettes(92);
colourpalette94.BackColor = ShiftOSDesktop.artpad_colour_palettes(93);
colourpalette95.BackColor = ShiftOSDesktop.artpad_colour_palettes(94);
colourpalette96.BackColor = ShiftOSDesktop.artpad_colour_palettes(95);
colourpalette97.BackColor = ShiftOSDesktop.artpad_colour_palettes(96);
colourpalette98.BackColor = ShiftOSDesktop.artpad_colour_palettes(97);
colourpalette99.BackColor = ShiftOSDesktop.artpad_colour_palettes(98);
colourpalette100.BackColor = ShiftOSDesktop.artpad_colour_palettes(99);
colourpalette101.BackColor = ShiftOSDesktop.artpad_colour_palettes(100);
colourpalette102.BackColor = ShiftOSDesktop.artpad_colour_palettes(101);
colourpalette103.BackColor = ShiftOSDesktop.artpad_colour_palettes(102);
colourpalette104.BackColor = ShiftOSDesktop.artpad_colour_palettes(103);
colourpalette105.BackColor = ShiftOSDesktop.artpad_colour_palettes(104);
colourpalette106.BackColor = ShiftOSDesktop.artpad_colour_palettes(105);
colourpalette107.BackColor = ShiftOSDesktop.artpad_colour_palettes(106);
colourpalette108.BackColor = ShiftOSDesktop.artpad_colour_palettes(107);
colourpalette109.BackColor = ShiftOSDesktop.artpad_colour_palettes(108);
colourpalette110.BackColor = ShiftOSDesktop.artpad_colour_palettes(109);
colourpalette111.BackColor = ShiftOSDesktop.artpad_colour_palettes(110);
colourpalette112.BackColor = ShiftOSDesktop.artpad_colour_palettes(111);
colourpalette113.BackColor = ShiftOSDesktop.artpad_colour_palettes(112);
colourpalette114.BackColor = ShiftOSDesktop.artpad_colour_palettes(113);
colourpalette115.BackColor = ShiftOSDesktop.artpad_colour_palettes(114);
colourpalette116.BackColor = ShiftOSDesktop.artpad_colour_palettes(115);
colourpalette117.BackColor = ShiftOSDesktop.artpad_colour_palettes(116);
colourpalette118.BackColor = ShiftOSDesktop.artpad_colour_palettes(117);
colourpalette119.BackColor = ShiftOSDesktop.artpad_colour_palettes(118);
colourpalette120.BackColor = ShiftOSDesktop.artpad_colour_palettes(119);
colourpalette121.BackColor = ShiftOSDesktop.artpad_colour_palettes(120);
colourpalette122.BackColor = ShiftOSDesktop.artpad_colour_palettes(121);
colourpalette123.BackColor = ShiftOSDesktop.artpad_colour_palettes(122);
colourpalette124.BackColor = ShiftOSDesktop.artpad_colour_palettes(123);
colourpalette125.BackColor = ShiftOSDesktop.artpad_colour_palettes(124);
colourpalette126.BackColor = ShiftOSDesktop.artpad_colour_palettes(125);
colourpalette127.BackColor = ShiftOSDesktop.artpad_colour_palettes(126);
colourpalette128.BackColor = ShiftOSDesktop.artpad_colour_palettes(127);
*/
}
public void savecolors()
{/*
ShiftOSDesktop.artpad_colour_palettes(0) = colourpalette1.BackColor;
ShiftOSDesktop.artpad_colour_palettes(1) = colourpalette2.BackColor;
ShiftOSDesktop.artpad_colour_palettes(2) = colourpalette3.BackColor;
ShiftOSDesktop.artpad_colour_palettes(3) = colourpalette4.BackColor;
ShiftOSDesktop.artpad_colour_palettes(4) = colourpalette5.BackColor;
ShiftOSDesktop.artpad_colour_palettes(5) = colourpalette6.BackColor;
ShiftOSDesktop.artpad_colour_palettes(6) = colourpalette7.BackColor;
ShiftOSDesktop.artpad_colour_palettes(7) = colourpalette8.BackColor;
ShiftOSDesktop.artpad_colour_palettes(8) = colourpalette9.BackColor;
ShiftOSDesktop.artpad_colour_palettes(9) = colourpalette10.BackColor;
ShiftOSDesktop.artpad_colour_palettes(10) = colourpalette11.BackColor;
ShiftOSDesktop.artpad_colour_palettes(11) = colourpalette12.BackColor;
ShiftOSDesktop.artpad_colour_palettes(12) = colourpalette13.BackColor;
ShiftOSDesktop.artpad_colour_palettes(13) = colourpalette14.BackColor;
ShiftOSDesktop.artpad_colour_palettes(14) = colourpalette15.BackColor;
ShiftOSDesktop.artpad_colour_palettes(15) = colourpalette16.BackColor;
ShiftOSDesktop.artpad_colour_palettes(16) = colourpalette17.BackColor;
ShiftOSDesktop.artpad_colour_palettes(17) = colourpalette18.BackColor;
ShiftOSDesktop.artpad_colour_palettes(18) = colourpalette19.BackColor;
ShiftOSDesktop.artpad_colour_palettes(19) = colourpalette20.BackColor;
ShiftOSDesktop.artpad_colour_palettes(20) = colourpalette21.BackColor;
ShiftOSDesktop.artpad_colour_palettes(21) = colourpalette22.BackColor;
ShiftOSDesktop.artpad_colour_palettes(22) = colourpalette23.BackColor;
ShiftOSDesktop.artpad_colour_palettes(23) = colourpalette24.BackColor;
ShiftOSDesktop.artpad_colour_palettes(24) = colourpalette25.BackColor;
ShiftOSDesktop.artpad_colour_palettes(25) = colourpalette26.BackColor;
ShiftOSDesktop.artpad_colour_palettes(26) = colourpalette27.BackColor;
ShiftOSDesktop.artpad_colour_palettes(27) = colourpalette28.BackColor;
ShiftOSDesktop.artpad_colour_palettes(28) = colourpalette29.BackColor;
ShiftOSDesktop.artpad_colour_palettes(29) = colourpalette30.BackColor;
ShiftOSDesktop.artpad_colour_palettes(30) = colourpalette31.BackColor;
ShiftOSDesktop.artpad_colour_palettes(31) = colourpalette32.BackColor;
ShiftOSDesktop.artpad_colour_palettes(32) = colourpalette33.BackColor;
ShiftOSDesktop.artpad_colour_palettes(33) = colourpalette34.BackColor;
ShiftOSDesktop.artpad_colour_palettes(34) = colourpalette35.BackColor;
ShiftOSDesktop.artpad_colour_palettes(35) = colourpalette36.BackColor;
ShiftOSDesktop.artpad_colour_palettes(36) = colourpalette37.BackColor;
ShiftOSDesktop.artpad_colour_palettes(37) = colourpalette38.BackColor;
ShiftOSDesktop.artpad_colour_palettes(38) = colourpalette39.BackColor;
ShiftOSDesktop.artpad_colour_palettes(39) = colourpalette40.BackColor;
ShiftOSDesktop.artpad_colour_palettes(40) = colourpalette41.BackColor;
ShiftOSDesktop.artpad_colour_palettes(41) = colourpalette42.BackColor;
ShiftOSDesktop.artpad_colour_palettes(42) = colourpalette43.BackColor;
ShiftOSDesktop.artpad_colour_palettes(43) = colourpalette44.BackColor;
ShiftOSDesktop.artpad_colour_palettes(44) = colourpalette45.BackColor;
ShiftOSDesktop.artpad_colour_palettes(45) = colourpalette46.BackColor;
ShiftOSDesktop.artpad_colour_palettes(46) = colourpalette47.BackColor;
ShiftOSDesktop.artpad_colour_palettes(47) = colourpalette48.BackColor;
ShiftOSDesktop.artpad_colour_palettes(48) = colourpalette49.BackColor;
ShiftOSDesktop.artpad_colour_palettes(49) = colourpalette50.BackColor;
ShiftOSDesktop.artpad_colour_palettes(50) = colourpalette51.BackColor;
ShiftOSDesktop.artpad_colour_palettes(51) = colourpalette52.BackColor;
ShiftOSDesktop.artpad_colour_palettes(52) = colourpalette53.BackColor;
ShiftOSDesktop.artpad_colour_palettes(53) = colourpalette54.BackColor;
ShiftOSDesktop.artpad_colour_palettes(54) = colourpalette55.BackColor;
ShiftOSDesktop.artpad_colour_palettes(55) = colourpalette56.BackColor;
ShiftOSDesktop.artpad_colour_palettes(56) = colourpalette57.BackColor;
ShiftOSDesktop.artpad_colour_palettes(57) = colourpalette58.BackColor;
ShiftOSDesktop.artpad_colour_palettes(58) = colourpalette59.BackColor;
ShiftOSDesktop.artpad_colour_palettes(59) = colourpalette60.BackColor;
ShiftOSDesktop.artpad_colour_palettes(60) = colourpalette61.BackColor;
ShiftOSDesktop.artpad_colour_palettes(61) = colourpalette62.BackColor;
ShiftOSDesktop.artpad_colour_palettes(62) = colourpalette63.BackColor;
ShiftOSDesktop.artpad_colour_palettes(63) = colourpalette64.BackColor;
ShiftOSDesktop.artpad_colour_palettes(64) = colourpalette65.BackColor;
ShiftOSDesktop.artpad_colour_palettes(65) = colourpalette66.BackColor;
ShiftOSDesktop.artpad_colour_palettes(66) = colourpalette67.BackColor;
ShiftOSDesktop.artpad_colour_palettes(67) = colourpalette68.BackColor;
ShiftOSDesktop.artpad_colour_palettes(68) = colourpalette69.BackColor;
ShiftOSDesktop.artpad_colour_palettes(69) = colourpalette70.BackColor;
ShiftOSDesktop.artpad_colour_palettes(70) = colourpalette71.BackColor;
ShiftOSDesktop.artpad_colour_palettes(71) = colourpalette72.BackColor;
ShiftOSDesktop.artpad_colour_palettes(72) = colourpalette73.BackColor;
ShiftOSDesktop.artpad_colour_palettes(73) = colourpalette74.BackColor;
ShiftOSDesktop.artpad_colour_palettes(74) = colourpalette75.BackColor;
ShiftOSDesktop.artpad_colour_palettes(75) = colourpalette76.BackColor;
ShiftOSDesktop.artpad_colour_palettes(76) = colourpalette77.BackColor;
ShiftOSDesktop.artpad_colour_palettes(77) = colourpalette78.BackColor;
ShiftOSDesktop.artpad_colour_palettes(78) = colourpalette79.BackColor;
ShiftOSDesktop.artpad_colour_palettes(79) = colourpalette80.BackColor;
ShiftOSDesktop.artpad_colour_palettes(80) = colourpalette81.BackColor;
ShiftOSDesktop.artpad_colour_palettes(81) = colourpalette82.BackColor;
ShiftOSDesktop.artpad_colour_palettes(82) = colourpalette83.BackColor;
ShiftOSDesktop.artpad_colour_palettes(83) = colourpalette84.BackColor;
ShiftOSDesktop.artpad_colour_palettes(84) = colourpalette85.BackColor;
ShiftOSDesktop.artpad_colour_palettes(85) = colourpalette86.BackColor;
ShiftOSDesktop.artpad_colour_palettes(86) = colourpalette87.BackColor;
ShiftOSDesktop.artpad_colour_palettes(87) = colourpalette88.BackColor;
ShiftOSDesktop.artpad_colour_palettes(88) = colourpalette89.BackColor;
ShiftOSDesktop.artpad_colour_palettes(89) = colourpalette90.BackColor;
ShiftOSDesktop.artpad_colour_palettes(90) = colourpalette91.BackColor;
ShiftOSDesktop.artpad_colour_palettes(91) = colourpalette92.BackColor;
ShiftOSDesktop.artpad_colour_palettes(92) = colourpalette93.BackColor;
ShiftOSDesktop.artpad_colour_palettes(93) = colourpalette94.BackColor;
ShiftOSDesktop.artpad_colour_palettes(94) = colourpalette95.BackColor;
ShiftOSDesktop.artpad_colour_palettes(95) = colourpalette96.BackColor;
ShiftOSDesktop.artpad_colour_palettes(96) = colourpalette97.BackColor;
ShiftOSDesktop.artpad_colour_palettes(97) = colourpalette98.BackColor;
ShiftOSDesktop.artpad_colour_palettes(98) = colourpalette99.BackColor;
ShiftOSDesktop.artpad_colour_palettes(99) = colourpalette100.BackColor;
ShiftOSDesktop.artpad_colour_palettes(100) = colourpalette101.BackColor;
ShiftOSDesktop.artpad_colour_palettes(101) = colourpalette102.BackColor;
ShiftOSDesktop.artpad_colour_palettes(102) = colourpalette103.BackColor;
ShiftOSDesktop.artpad_colour_palettes(103) = colourpalette104.BackColor;
ShiftOSDesktop.artpad_colour_palettes(104) = colourpalette105.BackColor;
ShiftOSDesktop.artpad_colour_palettes(105) = colourpalette106.BackColor;
ShiftOSDesktop.artpad_colour_palettes(106) = colourpalette107.BackColor;
ShiftOSDesktop.artpad_colour_palettes(107) = colourpalette108.BackColor;
ShiftOSDesktop.artpad_colour_palettes(108) = colourpalette109.BackColor;
ShiftOSDesktop.artpad_colour_palettes(109) = colourpalette110.BackColor;
ShiftOSDesktop.artpad_colour_palettes(110) = colourpalette111.BackColor;
ShiftOSDesktop.artpad_colour_palettes(111) = colourpalette112.BackColor;
ShiftOSDesktop.artpad_colour_palettes(112) = colourpalette113.BackColor;
ShiftOSDesktop.artpad_colour_palettes(113) = colourpalette114.BackColor;
ShiftOSDesktop.artpad_colour_palettes(114) = colourpalette115.BackColor;
ShiftOSDesktop.artpad_colour_palettes(115) = colourpalette116.BackColor;
ShiftOSDesktop.artpad_colour_palettes(116) = colourpalette117.BackColor;
ShiftOSDesktop.artpad_colour_palettes(117) = colourpalette118.BackColor;
ShiftOSDesktop.artpad_colour_palettes(118) = colourpalette119.BackColor;
ShiftOSDesktop.artpad_colour_palettes(119) = colourpalette120.BackColor;
ShiftOSDesktop.artpad_colour_palettes(120) = colourpalette121.BackColor;
ShiftOSDesktop.artpad_colour_palettes(121) = colourpalette122.BackColor;
ShiftOSDesktop.artpad_colour_palettes(122) = colourpalette123.BackColor;
ShiftOSDesktop.artpad_colour_palettes(123) = colourpalette124.BackColor;
ShiftOSDesktop.artpad_colour_palettes(124) = colourpalette125.BackColor;
ShiftOSDesktop.artpad_colour_palettes(125) = colourpalette126.BackColor;
ShiftOSDesktop.artpad_colour_palettes(126) = colourpalette127.BackColor;
ShiftOSDesktop.artpad_colour_palettes(127) = colourpalette128.BackColor;
*/
}
//
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
{
Infobox.Show("{ARTPAD_MAGNIFIER_ERROR}"
, "{ARTPAD_MAGNIFICATION_ERROR_EXP}");
}
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
{
Infobox.Show("{ARTPAD_MAGNIFIER_ERROR}"
, "{ARTPAD_MAGNIFICATION_ERROR_EXP_2}");
}
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()
{
AppearanceManager.SetupDialog(new FileDialog(new[] { ".pic" }, FileOpenerStyle.Save, new Action((file) =>
{
var res = file;
savelocation = res;
saveimage();
})));
}
public void saveimage()
{
var ms = new MemoryStream();
canvasbitmap.Save(ms, ImageFormat.Bmp);
Utils.WriteAllBytes(this.savelocation, ms.ToArray());
ms.Close();
}
#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 (ShiftoriumFrontend.UpgradeInstalled("artpad_limitless_pixels") == 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
{
}
}
}
public int GetPixelLimit()
{
int value = 2;
if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_4"))
{
value = 4;
if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_8"))
{
value = 8;
if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_16"))
{
value = 16;
if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_64"))
{
value = 64;
if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_256"))
{
value = 256;
if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_1024"))
{
value = 1024;
if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_4096"))
{
value = 4096;
if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_16384"))
{
value = 16384;
if (ShiftoriumFrontend.UpgradeInstalled("artpad_pixel_limit_65536"))
{
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)
{
Infobox.Show("{ARTPAD_ERROR}", "{ARTPAD_IMAGE_TOO_BIG}");
}
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.Hide();
}
// 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
{
Infobox.Show("{ARTPAD_UNDO_ERROR}"
, "{ARTPAD_NEXT_STEP_WILL_KILL_CANVAS_JUST_FLIPPING_CLICK_NEW}");
}
}
// 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
{
Infobox.Show("{ARTPAD_REDO_ERROR}"
, "{ARTPAD_NOTHING_TO_REDO}");
}
}
#endregion
#region File Loading
// ERROR: Handles clauses are not supported in C#
private void btnopen_Click(object sender, EventArgs e)
{
AppearanceManager.SetupDialog(new FileDialog(new[] { ".pic" }, FileOpenerStyle.Open, new Action((file) =>
{
string res = file;
savelocation = res;
openpic();
})));
}
public void openpic()
{
pnlinitialcanvassettings.Hide();
picdrawingdisplay.Show();
magnificationlevel = 1;
setmagnification();
canvasbitmap = (Bitmap)SkinEngine.ImageFromBinary(Utils.ReadAllBytes(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 pts = new Stack(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 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
{
try
{
eracerwidth = (Convert.ToInt32(txteracersize.Text));
}
catch
{
txteracersize.Text = eracerwidth.ToString();
}
}
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 determinevisiblepalettes()
{
int panelstoadd = 2;
if (ShiftoriumFrontend.UpgradeInstalled("artpad_4_color_palettes") == true)
{
panelstoadd = 4;
}
if (ShiftoriumFrontend.UpgradeInstalled("artpad_8_color_palettes") == true)
{
panelstoadd = 8;
}
if (ShiftoriumFrontend.UpgradeInstalled("artpad_16_color_palettes") == true)
{
panelstoadd = 16;
}
if (ShiftoriumFrontend.UpgradeInstalled("artpad_32_color_palettes") == true)
{
panelstoadd = 32;
}
if (ShiftoriumFrontend.UpgradeInstalled("artpad_64_color_palettes") == true)
{
panelstoadd = 64;
}
if (ShiftoriumFrontend.UpgradeInstalled("artpad_128_color_palettes") == 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.colourpalette1_MouseClick);
pnl.Show();
}
}
// ERROR: Handles clauses are not supported in C#
private void btnchangesizecancel_Click(object sender, EventArgs e)
{
pnlpalettesize.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)
{
}
private void btnpixelplacer_Click(object sender, EventArgs e)
{
selectedtool = "Pixel Placer";
gettoolsettings(pnlpixelplacersettings);
}
public void OnLoad()
{
foreach (Control ctrl in flowcolours.Controls)
{
ctrl.Tag = "keepbg";
ctrl.BackColor = Color.Black;
}
}
public void OnSkinLoad()
{
}
public bool OnUnload()
{
return true;
}
public void OnUpgrade()
{
}
}
public class undo
{
public Stack undoStack = new Stack();
public Stack redoStack = new Stack();
}
}