Added Origin Editing and Bitmap mask-based highlighting to SpriteMapEditor
This commit is contained in:
@@ -0,0 +1,78 @@
|
|||||||
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Drawing.Imaging;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.IO;
|
||||||
|
using System.Runtime.Serialization.Formatters.Binary;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SpriteMapEditor
|
||||||
|
{
|
||||||
|
[Serializable]
|
||||||
|
public class DirectBitmap : IDisposable
|
||||||
|
{
|
||||||
|
public Bitmap Bitmap { get; private set; }
|
||||||
|
public Int32[] Bits { get; private set; }
|
||||||
|
public bool Disposed { get; private set; }
|
||||||
|
public int Height { get; private set; }
|
||||||
|
public int Width { get; private set; }
|
||||||
|
|
||||||
|
protected GCHandle BitsHandle { get; private set; }
|
||||||
|
|
||||||
|
public DirectBitmap(int width, int height)
|
||||||
|
{
|
||||||
|
Width = width;
|
||||||
|
Height = height;
|
||||||
|
Bits = new Int32[width * height];
|
||||||
|
BitsHandle = GCHandle.Alloc(Bits, GCHandleType.Pinned);
|
||||||
|
Bitmap = new Bitmap(width, height, width * 4, PixelFormat.Format32bppPArgb, BitsHandle.AddrOfPinnedObject());
|
||||||
|
}
|
||||||
|
|
||||||
|
public DirectBitmap(DirectBitmap original)
|
||||||
|
{
|
||||||
|
Width = original.Width;
|
||||||
|
Height = original.Height;
|
||||||
|
Bits = (int[])original.Bits.Clone();
|
||||||
|
BitsHandle = GCHandle.Alloc(Bits, GCHandleType.Pinned);
|
||||||
|
Bitmap = new Bitmap(Width, Height, Width * 4, PixelFormat.Format32bppPArgb, BitsHandle.AddrOfPinnedObject());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CopyBitmap(DirectBitmap source)
|
||||||
|
{
|
||||||
|
if(Width == source.Width && Height == source.Height)
|
||||||
|
{
|
||||||
|
Bits = (int[])source.Bits.Clone();
|
||||||
|
BitsHandle = GCHandle.Alloc(Bits, GCHandleType.Pinned);
|
||||||
|
Bitmap = new Bitmap(Width, Height, Width * 4, PixelFormat.Format32bppPArgb, BitsHandle.AddrOfPinnedObject());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetPixel(int x, int y, Color colour)
|
||||||
|
{
|
||||||
|
int index = x + (y * Width);
|
||||||
|
int col = colour.ToArgb();
|
||||||
|
|
||||||
|
Bits[index] = col;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Color GetPixel(int x, int y)
|
||||||
|
{
|
||||||
|
int index = x + (y * Width);
|
||||||
|
int col = Bits[index];
|
||||||
|
Color result = Color.FromArgb(col);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
if (Disposed) return;
|
||||||
|
Disposed = true;
|
||||||
|
Bitmap.Dispose();
|
||||||
|
BitsHandle.Free();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Generated
+129
-94
@@ -28,14 +28,9 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
|
|
||||||
this.spriteList = new System.Windows.Forms.ListBox();
|
this.spriteList = new System.Windows.Forms.ListBox();
|
||||||
this.addSpriteButton = new System.Windows.Forms.Button();
|
this.addSpriteButton = new System.Windows.Forms.Button();
|
||||||
this.removeSpriteButton = new System.Windows.Forms.Button();
|
this.removeSpriteButton = new System.Windows.Forms.Button();
|
||||||
this.loadSpriteSheetButton = new System.Windows.Forms.Button();
|
|
||||||
this.loadMapButton = new System.Windows.Forms.Button();
|
|
||||||
this.saveMapButton = new System.Windows.Forms.Button();
|
|
||||||
this.filePanel = new System.Windows.Forms.Panel();
|
|
||||||
this.spriteListPanel = new System.Windows.Forms.Panel();
|
this.spriteListPanel = new System.Windows.Forms.Panel();
|
||||||
this.moveDownButton = new System.Windows.Forms.Button();
|
this.moveDownButton = new System.Windows.Forms.Button();
|
||||||
this.moveUpButton = new System.Windows.Forms.Button();
|
this.moveUpButton = new System.Windows.Forms.Button();
|
||||||
@@ -61,11 +56,18 @@
|
|||||||
this.saveMapDialog = new System.Windows.Forms.SaveFileDialog();
|
this.saveMapDialog = new System.Windows.Forms.SaveFileDialog();
|
||||||
this.fillButton = new System.Windows.Forms.Button();
|
this.fillButton = new System.Windows.Forms.Button();
|
||||||
this.spriteViewerPanel = new System.Windows.Forms.Panel();
|
this.spriteViewerPanel = new System.Windows.Forms.Panel();
|
||||||
this.spriteSheetViewer = new SpriteMapEditor.PictureBoxWithInterpolationMode();
|
|
||||||
this.zoomInButton = new System.Windows.Forms.Button();
|
this.zoomInButton = new System.Windows.Forms.Button();
|
||||||
this.zoomOutButton = new System.Windows.Forms.Button();
|
this.zoomOutButton = new System.Windows.Forms.Button();
|
||||||
this.zoomLabel = new System.Windows.Forms.Label();
|
this.zoomLabel = new System.Windows.Forms.Label();
|
||||||
this.filePanel.SuspendLayout();
|
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||||
|
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.loadSpriteSheetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.loadSpriteMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.saveSpriteMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.saveSpriteMapAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.editingOriginCheckBox = new System.Windows.Forms.CheckBox();
|
||||||
|
this.spriteSheetViewer = new SpriteMapEditor.PictureBoxWithInterpolationMode();
|
||||||
this.spriteListPanel.SuspendLayout();
|
this.spriteListPanel.SuspendLayout();
|
||||||
this.spritePanel.SuspendLayout();
|
this.spritePanel.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.originYPosBox)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.originYPosBox)).BeginInit();
|
||||||
@@ -75,6 +77,7 @@
|
|||||||
((System.ComponentModel.ISupportInitialize)(this.spriteYPosBox)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.spriteYPosBox)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.spriteXPosBox)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.spriteXPosBox)).BeginInit();
|
||||||
this.spriteViewerPanel.SuspendLayout();
|
this.spriteViewerPanel.SuspendLayout();
|
||||||
|
this.menuStrip1.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.spriteSheetViewer)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.spriteSheetViewer)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
@@ -108,46 +111,6 @@
|
|||||||
this.removeSpriteButton.UseVisualStyleBackColor = true;
|
this.removeSpriteButton.UseVisualStyleBackColor = true;
|
||||||
this.removeSpriteButton.Click += new System.EventHandler(this.removeSpriteButton_Click);
|
this.removeSpriteButton.Click += new System.EventHandler(this.removeSpriteButton_Click);
|
||||||
//
|
//
|
||||||
// loadSpriteSheetButton
|
|
||||||
//
|
|
||||||
this.loadSpriteSheetButton.Location = new System.Drawing.Point(3, 3);
|
|
||||||
this.loadSpriteSheetButton.Name = "loadSpriteSheetButton";
|
|
||||||
this.loadSpriteSheetButton.Size = new System.Drawing.Size(185, 23);
|
|
||||||
this.loadSpriteSheetButton.TabIndex = 4;
|
|
||||||
this.loadSpriteSheetButton.Text = "Load Sprite Sheet...";
|
|
||||||
this.loadSpriteSheetButton.UseVisualStyleBackColor = true;
|
|
||||||
this.loadSpriteSheetButton.Click += new System.EventHandler(this.loadSpriteSheetButton_Click);
|
|
||||||
//
|
|
||||||
// loadMapButton
|
|
||||||
//
|
|
||||||
this.loadMapButton.Location = new System.Drawing.Point(3, 32);
|
|
||||||
this.loadMapButton.Name = "loadMapButton";
|
|
||||||
this.loadMapButton.Size = new System.Drawing.Size(92, 23);
|
|
||||||
this.loadMapButton.TabIndex = 5;
|
|
||||||
this.loadMapButton.Text = "Load Map...";
|
|
||||||
this.loadMapButton.UseVisualStyleBackColor = true;
|
|
||||||
this.loadMapButton.Click += new System.EventHandler(this.loadMapButton_Click);
|
|
||||||
//
|
|
||||||
// saveMapButton
|
|
||||||
//
|
|
||||||
this.saveMapButton.Location = new System.Drawing.Point(96, 32);
|
|
||||||
this.saveMapButton.Name = "saveMapButton";
|
|
||||||
this.saveMapButton.Size = new System.Drawing.Size(92, 23);
|
|
||||||
this.saveMapButton.TabIndex = 6;
|
|
||||||
this.saveMapButton.Text = "Save Map As...";
|
|
||||||
this.saveMapButton.UseVisualStyleBackColor = true;
|
|
||||||
this.saveMapButton.Click += new System.EventHandler(this.saveMapButton_Click);
|
|
||||||
//
|
|
||||||
// filePanel
|
|
||||||
//
|
|
||||||
this.filePanel.Controls.Add(this.loadSpriteSheetButton);
|
|
||||||
this.filePanel.Controls.Add(this.saveMapButton);
|
|
||||||
this.filePanel.Controls.Add(this.loadMapButton);
|
|
||||||
this.filePanel.Location = new System.Drawing.Point(2, 2);
|
|
||||||
this.filePanel.Name = "filePanel";
|
|
||||||
this.filePanel.Size = new System.Drawing.Size(190, 62);
|
|
||||||
this.filePanel.TabIndex = 7;
|
|
||||||
//
|
|
||||||
// spriteListPanel
|
// spriteListPanel
|
||||||
//
|
//
|
||||||
this.spriteListPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
this.spriteListPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
@@ -160,9 +123,9 @@
|
|||||||
this.spriteListPanel.Controls.Add(this.spriteList);
|
this.spriteListPanel.Controls.Add(this.spriteList);
|
||||||
this.spriteListPanel.Controls.Add(this.addSpriteButton);
|
this.spriteListPanel.Controls.Add(this.addSpriteButton);
|
||||||
this.spriteListPanel.Controls.Add(this.removeSpriteButton);
|
this.spriteListPanel.Controls.Add(this.removeSpriteButton);
|
||||||
this.spriteListPanel.Location = new System.Drawing.Point(2, 63);
|
this.spriteListPanel.Location = new System.Drawing.Point(2, 27);
|
||||||
this.spriteListPanel.Name = "spriteListPanel";
|
this.spriteListPanel.Name = "spriteListPanel";
|
||||||
this.spriteListPanel.Size = new System.Drawing.Size(190, 254);
|
this.spriteListPanel.Size = new System.Drawing.Size(190, 258);
|
||||||
this.spriteListPanel.TabIndex = 8;
|
this.spriteListPanel.TabIndex = 8;
|
||||||
//
|
//
|
||||||
// moveDownButton
|
// moveDownButton
|
||||||
@@ -198,6 +161,7 @@
|
|||||||
// spritePanel
|
// spritePanel
|
||||||
//
|
//
|
||||||
this.spritePanel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
this.spritePanel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.spritePanel.Controls.Add(this.editingOriginCheckBox);
|
||||||
this.spritePanel.Controls.Add(this.originYPosBox);
|
this.spritePanel.Controls.Add(this.originYPosBox);
|
||||||
this.spritePanel.Controls.Add(this.originXPosBox);
|
this.spritePanel.Controls.Add(this.originXPosBox);
|
||||||
this.spritePanel.Controls.Add(this.originYPosLabel);
|
this.spritePanel.Controls.Add(this.originYPosLabel);
|
||||||
@@ -213,15 +177,15 @@
|
|||||||
this.spritePanel.Controls.Add(this.label2);
|
this.spritePanel.Controls.Add(this.label2);
|
||||||
this.spritePanel.Controls.Add(this.spriteSettingsLabel);
|
this.spritePanel.Controls.Add(this.spriteSettingsLabel);
|
||||||
this.spritePanel.Controls.Add(this.spriteNameBox);
|
this.spritePanel.Controls.Add(this.spriteNameBox);
|
||||||
this.spritePanel.Location = new System.Drawing.Point(2, 323);
|
this.spritePanel.Location = new System.Drawing.Point(2, 291);
|
||||||
this.spritePanel.Name = "spritePanel";
|
this.spritePanel.Name = "spritePanel";
|
||||||
this.spritePanel.Size = new System.Drawing.Size(190, 140);
|
this.spritePanel.Size = new System.Drawing.Size(190, 172);
|
||||||
this.spritePanel.TabIndex = 9;
|
this.spritePanel.TabIndex = 9;
|
||||||
//
|
//
|
||||||
// originYPosBox
|
// originYPosBox
|
||||||
//
|
//
|
||||||
this.originYPosBox.Enabled = false;
|
this.originYPosBox.Enabled = false;
|
||||||
this.originYPosBox.Location = new System.Drawing.Point(143, 108);
|
this.originYPosBox.Location = new System.Drawing.Point(143, 131);
|
||||||
this.originYPosBox.Maximum = new decimal(new int[] {
|
this.originYPosBox.Maximum = new decimal(new int[] {
|
||||||
2147483647,
|
2147483647,
|
||||||
0,
|
0,
|
||||||
@@ -235,7 +199,7 @@
|
|||||||
// originXPosBox
|
// originXPosBox
|
||||||
//
|
//
|
||||||
this.originXPosBox.Enabled = false;
|
this.originXPosBox.Enabled = false;
|
||||||
this.originXPosBox.Location = new System.Drawing.Point(51, 108);
|
this.originXPosBox.Location = new System.Drawing.Point(51, 131);
|
||||||
this.originXPosBox.Maximum = new decimal(new int[] {
|
this.originXPosBox.Maximum = new decimal(new int[] {
|
||||||
2147483647,
|
2147483647,
|
||||||
0,
|
0,
|
||||||
@@ -250,7 +214,7 @@
|
|||||||
//
|
//
|
||||||
this.originYPosLabel.AutoSize = true;
|
this.originYPosLabel.AutoSize = true;
|
||||||
this.originYPosLabel.Enabled = false;
|
this.originYPosLabel.Enabled = false;
|
||||||
this.originYPosLabel.Location = new System.Drawing.Point(98, 111);
|
this.originYPosLabel.Location = new System.Drawing.Point(98, 134);
|
||||||
this.originYPosLabel.Name = "originYPosLabel";
|
this.originYPosLabel.Name = "originYPosLabel";
|
||||||
this.originYPosLabel.Size = new System.Drawing.Size(44, 13);
|
this.originYPosLabel.Size = new System.Drawing.Size(44, 13);
|
||||||
this.originYPosLabel.TabIndex = 20;
|
this.originYPosLabel.TabIndex = 20;
|
||||||
@@ -260,7 +224,7 @@
|
|||||||
//
|
//
|
||||||
this.originXPosLabel.AutoSize = true;
|
this.originXPosLabel.AutoSize = true;
|
||||||
this.originXPosLabel.Enabled = false;
|
this.originXPosLabel.Enabled = false;
|
||||||
this.originXPosLabel.Location = new System.Drawing.Point(6, 111);
|
this.originXPosLabel.Location = new System.Drawing.Point(6, 134);
|
||||||
this.originXPosLabel.Name = "originXPosLabel";
|
this.originXPosLabel.Name = "originXPosLabel";
|
||||||
this.originXPosLabel.Size = new System.Drawing.Size(44, 13);
|
this.originXPosLabel.Size = new System.Drawing.Size(44, 13);
|
||||||
this.originXPosLabel.TabIndex = 19;
|
this.originXPosLabel.TabIndex = 19;
|
||||||
@@ -399,7 +363,7 @@
|
|||||||
//
|
//
|
||||||
// fillButton
|
// fillButton
|
||||||
//
|
//
|
||||||
this.fillButton.Location = new System.Drawing.Point(454, 5);
|
this.fillButton.Location = new System.Drawing.Point(461, 30);
|
||||||
this.fillButton.Name = "fillButton";
|
this.fillButton.Name = "fillButton";
|
||||||
this.fillButton.Size = new System.Drawing.Size(86, 23);
|
this.fillButton.Size = new System.Drawing.Size(86, 23);
|
||||||
this.fillButton.TabIndex = 12;
|
this.fillButton.TabIndex = 12;
|
||||||
@@ -413,15 +377,110 @@
|
|||||||
this.spriteViewerPanel.BackColor = System.Drawing.SystemColors.ControlDark;
|
this.spriteViewerPanel.BackColor = System.Drawing.SystemColors.ControlDark;
|
||||||
this.spriteViewerPanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
this.spriteViewerPanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||||
this.spriteViewerPanel.Controls.Add(this.spriteSheetViewer);
|
this.spriteViewerPanel.Controls.Add(this.spriteSheetViewer);
|
||||||
this.spriteViewerPanel.Location = new System.Drawing.Point(199, 34);
|
this.spriteViewerPanel.Location = new System.Drawing.Point(198, 59);
|
||||||
this.spriteViewerPanel.Name = "spriteViewerPanel";
|
this.spriteViewerPanel.Name = "spriteViewerPanel";
|
||||||
this.spriteViewerPanel.Size = new System.Drawing.Size(488, 429);
|
this.spriteViewerPanel.Size = new System.Drawing.Size(488, 404);
|
||||||
this.spriteViewerPanel.TabIndex = 14;
|
this.spriteViewerPanel.TabIndex = 14;
|
||||||
this.spriteViewerPanel.Scroll += new System.Windows.Forms.ScrollEventHandler(this.spriteViewerPanel_Scroll);
|
this.spriteViewerPanel.Scroll += new System.Windows.Forms.ScrollEventHandler(this.spriteViewerPanel_Scroll);
|
||||||
//
|
//
|
||||||
|
// zoomInButton
|
||||||
|
//
|
||||||
|
this.zoomInButton.Location = new System.Drawing.Point(659, 30);
|
||||||
|
this.zoomInButton.Name = "zoomInButton";
|
||||||
|
this.zoomInButton.Size = new System.Drawing.Size(27, 23);
|
||||||
|
this.zoomInButton.TabIndex = 5;
|
||||||
|
this.zoomInButton.Text = "+";
|
||||||
|
this.zoomInButton.UseVisualStyleBackColor = true;
|
||||||
|
this.zoomInButton.Click += new System.EventHandler(this.zoomInButton_Click);
|
||||||
|
//
|
||||||
|
// zoomOutButton
|
||||||
|
//
|
||||||
|
this.zoomOutButton.Location = new System.Drawing.Point(566, 30);
|
||||||
|
this.zoomOutButton.Name = "zoomOutButton";
|
||||||
|
this.zoomOutButton.Size = new System.Drawing.Size(28, 23);
|
||||||
|
this.zoomOutButton.TabIndex = 6;
|
||||||
|
this.zoomOutButton.Text = "-";
|
||||||
|
this.zoomOutButton.UseVisualStyleBackColor = true;
|
||||||
|
this.zoomOutButton.Click += new System.EventHandler(this.zoomOutButton_Click);
|
||||||
|
//
|
||||||
|
// zoomLabel
|
||||||
|
//
|
||||||
|
this.zoomLabel.AutoSize = true;
|
||||||
|
this.zoomLabel.Location = new System.Drawing.Point(600, 35);
|
||||||
|
this.zoomLabel.Name = "zoomLabel";
|
||||||
|
this.zoomLabel.Size = new System.Drawing.Size(53, 13);
|
||||||
|
this.zoomLabel.TabIndex = 15;
|
||||||
|
this.zoomLabel.Text = "Zoom: 3X";
|
||||||
|
//
|
||||||
|
// menuStrip1
|
||||||
|
//
|
||||||
|
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.fileToolStripMenuItem});
|
||||||
|
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.menuStrip1.Name = "menuStrip1";
|
||||||
|
this.menuStrip1.Size = new System.Drawing.Size(691, 24);
|
||||||
|
this.menuStrip1.TabIndex = 16;
|
||||||
|
this.menuStrip1.Text = "menuStrip1";
|
||||||
|
//
|
||||||
|
// fileToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.loadSpriteSheetToolStripMenuItem,
|
||||||
|
this.loadSpriteMapToolStripMenuItem,
|
||||||
|
this.toolStripMenuItem1,
|
||||||
|
this.saveSpriteMapToolStripMenuItem,
|
||||||
|
this.saveSpriteMapAsToolStripMenuItem});
|
||||||
|
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||||
|
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
||||||
|
this.fileToolStripMenuItem.Text = "File";
|
||||||
|
//
|
||||||
|
// loadSpriteSheetToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.loadSpriteSheetToolStripMenuItem.Name = "loadSpriteSheetToolStripMenuItem";
|
||||||
|
this.loadSpriteSheetToolStripMenuItem.Size = new System.Drawing.Size(183, 22);
|
||||||
|
this.loadSpriteSheetToolStripMenuItem.Text = "Load Sprite Sheet...";
|
||||||
|
this.loadSpriteSheetToolStripMenuItem.Click += new System.EventHandler(this.loadSpriteSheetToolStripMenuItem_Click);
|
||||||
|
//
|
||||||
|
// loadSpriteMapToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.loadSpriteMapToolStripMenuItem.Name = "loadSpriteMapToolStripMenuItem";
|
||||||
|
this.loadSpriteMapToolStripMenuItem.Size = new System.Drawing.Size(183, 22);
|
||||||
|
this.loadSpriteMapToolStripMenuItem.Text = "Load Sprite Map...";
|
||||||
|
this.loadSpriteMapToolStripMenuItem.Click += new System.EventHandler(this.loadMapToolStripMenuItem_Click);
|
||||||
|
//
|
||||||
|
// toolStripMenuItem1
|
||||||
|
//
|
||||||
|
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||||
|
this.toolStripMenuItem1.Size = new System.Drawing.Size(180, 6);
|
||||||
|
//
|
||||||
|
// saveSpriteMapToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.saveSpriteMapToolStripMenuItem.Name = "saveSpriteMapToolStripMenuItem";
|
||||||
|
this.saveSpriteMapToolStripMenuItem.Size = new System.Drawing.Size(183, 22);
|
||||||
|
this.saveSpriteMapToolStripMenuItem.Text = "Save Sprite Map";
|
||||||
|
this.saveSpriteMapToolStripMenuItem.Click += new System.EventHandler(this.saveSpriteMapToolStripMenuItem_Click);
|
||||||
|
//
|
||||||
|
// saveSpriteMapAsToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.saveSpriteMapAsToolStripMenuItem.Name = "saveSpriteMapAsToolStripMenuItem";
|
||||||
|
this.saveSpriteMapAsToolStripMenuItem.Size = new System.Drawing.Size(183, 22);
|
||||||
|
this.saveSpriteMapAsToolStripMenuItem.Text = "Save Sprite Map As...";
|
||||||
|
this.saveSpriteMapAsToolStripMenuItem.Click += new System.EventHandler(this.saveMapAsToolStripMenuItem_Click);
|
||||||
|
//
|
||||||
|
// editingOriginCheckBox
|
||||||
|
//
|
||||||
|
this.editingOriginCheckBox.AutoSize = true;
|
||||||
|
this.editingOriginCheckBox.Location = new System.Drawing.Point(9, 108);
|
||||||
|
this.editingOriginCheckBox.Name = "editingOriginCheckBox";
|
||||||
|
this.editingOriginCheckBox.Size = new System.Drawing.Size(107, 17);
|
||||||
|
this.editingOriginCheckBox.TabIndex = 23;
|
||||||
|
this.editingOriginCheckBox.Text = "Edit Origin Point?";
|
||||||
|
this.editingOriginCheckBox.UseVisualStyleBackColor = true;
|
||||||
|
this.editingOriginCheckBox.CheckedChanged += new System.EventHandler(this.editingOriginCheckBox_CheckedChanged);
|
||||||
|
//
|
||||||
// spriteSheetViewer
|
// spriteSheetViewer
|
||||||
//
|
//
|
||||||
this.spriteSheetViewer.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("spriteSheetViewer.BackgroundImage")));
|
this.spriteSheetViewer.BackgroundImage = global::SpriteMapEditor.Properties.Resources.transparentUI;
|
||||||
this.spriteSheetViewer.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
|
this.spriteSheetViewer.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
|
||||||
this.spriteSheetViewer.Location = new System.Drawing.Point(0, 0);
|
this.spriteSheetViewer.Location = new System.Drawing.Point(0, 0);
|
||||||
this.spriteSheetViewer.Margin = new System.Windows.Forms.Padding(0);
|
this.spriteSheetViewer.Margin = new System.Windows.Forms.Padding(0);
|
||||||
@@ -436,35 +495,6 @@
|
|||||||
this.spriteSheetViewer.MouseMove += new System.Windows.Forms.MouseEventHandler(this.spriteSheetViewer_MouseMove);
|
this.spriteSheetViewer.MouseMove += new System.Windows.Forms.MouseEventHandler(this.spriteSheetViewer_MouseMove);
|
||||||
this.spriteSheetViewer.MouseUp += new System.Windows.Forms.MouseEventHandler(this.spriteSheetViewer_MouseUp);
|
this.spriteSheetViewer.MouseUp += new System.Windows.Forms.MouseEventHandler(this.spriteSheetViewer_MouseUp);
|
||||||
//
|
//
|
||||||
// zoomInButton
|
|
||||||
//
|
|
||||||
this.zoomInButton.Location = new System.Drawing.Point(652, 5);
|
|
||||||
this.zoomInButton.Name = "zoomInButton";
|
|
||||||
this.zoomInButton.Size = new System.Drawing.Size(27, 23);
|
|
||||||
this.zoomInButton.TabIndex = 5;
|
|
||||||
this.zoomInButton.Text = "+";
|
|
||||||
this.zoomInButton.UseVisualStyleBackColor = true;
|
|
||||||
this.zoomInButton.Click += new System.EventHandler(this.zoomInButton_Click);
|
|
||||||
//
|
|
||||||
// zoomOutButton
|
|
||||||
//
|
|
||||||
this.zoomOutButton.Location = new System.Drawing.Point(559, 5);
|
|
||||||
this.zoomOutButton.Name = "zoomOutButton";
|
|
||||||
this.zoomOutButton.Size = new System.Drawing.Size(28, 23);
|
|
||||||
this.zoomOutButton.TabIndex = 6;
|
|
||||||
this.zoomOutButton.Text = "-";
|
|
||||||
this.zoomOutButton.UseVisualStyleBackColor = true;
|
|
||||||
this.zoomOutButton.Click += new System.EventHandler(this.zoomOutButton_Click);
|
|
||||||
//
|
|
||||||
// zoomLabel
|
|
||||||
//
|
|
||||||
this.zoomLabel.AutoSize = true;
|
|
||||||
this.zoomLabel.Location = new System.Drawing.Point(593, 10);
|
|
||||||
this.zoomLabel.Name = "zoomLabel";
|
|
||||||
this.zoomLabel.Size = new System.Drawing.Size(53, 13);
|
|
||||||
this.zoomLabel.TabIndex = 15;
|
|
||||||
this.zoomLabel.Text = "Zoom: 3X";
|
|
||||||
//
|
|
||||||
// Form1
|
// Form1
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
@@ -478,10 +508,9 @@
|
|||||||
this.Controls.Add(this.fillButton);
|
this.Controls.Add(this.fillButton);
|
||||||
this.Controls.Add(this.spritePanel);
|
this.Controls.Add(this.spritePanel);
|
||||||
this.Controls.Add(this.spriteListPanel);
|
this.Controls.Add(this.spriteListPanel);
|
||||||
this.Controls.Add(this.filePanel);
|
this.Controls.Add(this.menuStrip1);
|
||||||
this.Name = "Form1";
|
this.Name = "Form1";
|
||||||
this.Text = "QUROGames Sprite Map Editor";
|
this.Text = "QUROGames Sprite Map Editor";
|
||||||
this.filePanel.ResumeLayout(false);
|
|
||||||
this.spriteListPanel.ResumeLayout(false);
|
this.spriteListPanel.ResumeLayout(false);
|
||||||
this.spriteListPanel.PerformLayout();
|
this.spriteListPanel.PerformLayout();
|
||||||
this.spritePanel.ResumeLayout(false);
|
this.spritePanel.ResumeLayout(false);
|
||||||
@@ -493,6 +522,8 @@
|
|||||||
((System.ComponentModel.ISupportInitialize)(this.spriteYPosBox)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.spriteYPosBox)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.spriteXPosBox)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.spriteXPosBox)).EndInit();
|
||||||
this.spriteViewerPanel.ResumeLayout(false);
|
this.spriteViewerPanel.ResumeLayout(false);
|
||||||
|
this.menuStrip1.ResumeLayout(false);
|
||||||
|
this.menuStrip1.PerformLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.spriteSheetViewer)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.spriteSheetViewer)).EndInit();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
@@ -504,10 +535,6 @@
|
|||||||
private System.Windows.Forms.ListBox spriteList;
|
private System.Windows.Forms.ListBox spriteList;
|
||||||
private System.Windows.Forms.Button addSpriteButton;
|
private System.Windows.Forms.Button addSpriteButton;
|
||||||
private System.Windows.Forms.Button removeSpriteButton;
|
private System.Windows.Forms.Button removeSpriteButton;
|
||||||
private System.Windows.Forms.Button loadSpriteSheetButton;
|
|
||||||
private System.Windows.Forms.Button loadMapButton;
|
|
||||||
private System.Windows.Forms.Button saveMapButton;
|
|
||||||
private System.Windows.Forms.Panel filePanel;
|
|
||||||
private System.Windows.Forms.Panel spriteListPanel;
|
private System.Windows.Forms.Panel spriteListPanel;
|
||||||
private System.Windows.Forms.Label spritesLabel;
|
private System.Windows.Forms.Label spritesLabel;
|
||||||
private System.Windows.Forms.Panel spritePanel;
|
private System.Windows.Forms.Panel spritePanel;
|
||||||
@@ -537,6 +564,14 @@
|
|||||||
private System.Windows.Forms.Label originXPosLabel;
|
private System.Windows.Forms.Label originXPosLabel;
|
||||||
private System.Windows.Forms.Button moveDownButton;
|
private System.Windows.Forms.Button moveDownButton;
|
||||||
private System.Windows.Forms.Button moveUpButton;
|
private System.Windows.Forms.Button moveUpButton;
|
||||||
|
private System.Windows.Forms.MenuStrip menuStrip1;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem loadSpriteSheetToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem loadSpriteMapToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem saveSpriteMapToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem saveSpriteMapAsToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.CheckBox editingOriginCheckBox;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+162
-25
@@ -27,7 +27,25 @@ namespace SpriteMapEditor
|
|||||||
|
|
||||||
private bool loadingSprite = false;
|
private bool loadingSprite = false;
|
||||||
private bool movingWithMouse = false;
|
private bool movingWithMouse = false;
|
||||||
private bool rearrangingSprites = false;
|
private bool editingOrigin = false;
|
||||||
|
|
||||||
|
const string TITLE = "QUROGames Sprite Map Editor";
|
||||||
|
private string currentSpriteMapFileLocation;
|
||||||
|
private string CurrentSpriteMapFileLocation
|
||||||
|
{
|
||||||
|
get { return currentSpriteMapFileLocation; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
currentSpriteMapFileLocation = value;
|
||||||
|
Text = TITLE + " - " + Path.GetFileName(currentSpriteMapFileLocation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Image originPointer_black;
|
||||||
|
Image originPointer_white;
|
||||||
|
|
||||||
|
DirectBitmap baseMask;
|
||||||
|
DirectBitmap highlightMask;
|
||||||
|
|
||||||
private Point newPosition;
|
private Point newPosition;
|
||||||
private Point oldPosition;
|
private Point oldPosition;
|
||||||
@@ -59,15 +77,20 @@ namespace SpriteMapEditor
|
|||||||
spriteList.DisplayMember = "Name";
|
spriteList.DisplayMember = "Name";
|
||||||
spriteList.ValueMember = "Bounds";
|
spriteList.ValueMember = "Bounds";
|
||||||
|
|
||||||
|
originPointer_black = Properties.Resources.originPointer_black;
|
||||||
|
originPointer_white = Properties.Resources.originPointer_white;
|
||||||
|
|
||||||
LoadSpriteEditorValues();
|
LoadSpriteEditorValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadSpriteSheetButton_Click(object sender, EventArgs e)
|
private void loadSpriteSheetToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if(loadSpriteSheetDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
if(loadSpriteSheetDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
||||||
{
|
{
|
||||||
spriteSheetViewer.Image = Image.FromFile(loadSpriteSheetDialog.FileName);
|
spriteSheetViewer.Image = Image.FromFile(loadSpriteSheetDialog.FileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
InitializeMask();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void spriteSheetViewer_Paint(object sender, PaintEventArgs e)
|
private void spriteSheetViewer_Paint(object sender, PaintEventArgs e)
|
||||||
@@ -78,18 +101,35 @@ namespace SpriteMapEditor
|
|||||||
spriteSheetViewer.Height = spriteSheetViewer.Image.Height * zoomLevel;
|
spriteSheetViewer.Height = spriteSheetViewer.Image.Height * zoomLevel;
|
||||||
|
|
||||||
if (highlight)
|
if (highlight)
|
||||||
SurroundWithTranslucentRects(GetDrawingRect(currentSprite.Bounds, false), Color.Gray, e.Graphics);
|
|
||||||
DrawHighContrastOutline(GetDrawingRect(currentSprite.Bounds), e.Graphics);
|
|
||||||
/*
|
|
||||||
* Origin display code, uncomment when ready to implement
|
|
||||||
*
|
|
||||||
using (Brush magentaBrush = new SolidBrush(Color.Magenta))
|
|
||||||
{
|
{
|
||||||
e.Graphics.FillRectangle(magentaBrush, GetOriginDrawingRect(currentSprite));
|
//SurroundWithTranslucentRects(GetDrawingRect(currentSprite.Bounds, false), Color.Gray, e.Graphics);
|
||||||
|
//e.Graphics.DrawImage(highlightMask.Bitmap, Point.Empty);
|
||||||
|
Rectangle highlightBounds = new Rectangle(0,0, spriteSheetViewer.Bounds.Width + 1, spriteSheetViewer.Bounds.Height + 1);
|
||||||
|
e.Graphics.DrawImage(highlightMask.Bitmap, highlightBounds);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
|
DrawHighContrastOutline(GetDrawingRect(currentSprite.Bounds), e.Graphics);
|
||||||
|
|
||||||
|
//origin drawing code
|
||||||
|
if (editingOrigin)
|
||||||
|
{
|
||||||
|
var spriteSheet = (Bitmap)spriteSheetViewer.Image;
|
||||||
|
var colorAtOrigin = spriteSheet.GetPixel((int)(currentSprite.Bounds.X + currentSprite.Origin.X),
|
||||||
|
(int)(currentSprite.Bounds.Y + currentSprite.Origin.Y));
|
||||||
|
|
||||||
|
var highContrastPointer = originPointer_black;
|
||||||
|
if (colorAtOrigin.GetBrightness() < 0.5f)
|
||||||
|
{
|
||||||
|
highContrastPointer = originPointer_white;
|
||||||
|
}
|
||||||
|
|
||||||
|
var drawPoint = GetOriginDrawingPoint(currentSprite);
|
||||||
|
drawPoint.X -= 5;
|
||||||
|
drawPoint.Y -= 5;
|
||||||
|
|
||||||
|
e.Graphics.DrawImage(highContrastPointer, drawPoint);
|
||||||
|
}
|
||||||
|
}
|
||||||
base.OnPaint(e);
|
base.OnPaint(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,16 +177,51 @@ namespace SpriteMapEditor
|
|||||||
return drawingRect;
|
return drawingRect;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Rectangle GetOriginDrawingRect(SpriteMapRegion sprite)
|
private Point GetOriginDrawingPoint(SpriteMapRegion sprite)
|
||||||
{
|
{
|
||||||
var drawingRect = new Rectangle(sprite.Bounds.X, sprite.Bounds.Y, 2, 2);
|
var drawingPoint = new Point(sprite.Bounds.X, sprite.Bounds.Y);
|
||||||
drawingRect.X = drawingRect.X * zoomLevel - (zoomLevel - 1);
|
drawingPoint.X = drawingPoint.X * zoomLevel - (zoomLevel - 1);
|
||||||
drawingRect.Y = drawingRect.Y * zoomLevel - (zoomLevel - 1);
|
drawingPoint.Y = drawingPoint.Y * zoomLevel - (zoomLevel - 1);
|
||||||
drawingRect.X += drawingRectangleOffset;
|
drawingPoint.X += drawingRectangleOffset;
|
||||||
drawingRect.Y += drawingRectangleOffset;
|
drawingPoint.Y += drawingRectangleOffset;
|
||||||
drawingRect.X += (int)sprite.Origin.X * zoomLevel;
|
drawingPoint.X += (int)sprite.Origin.X * zoomLevel;
|
||||||
drawingRect.Y += (int)sprite.Origin.Y * zoomLevel;
|
drawingPoint.Y += (int)sprite.Origin.Y * zoomLevel;
|
||||||
return drawingRect;
|
return drawingPoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateHighlightMask()
|
||||||
|
{
|
||||||
|
if (highlight)
|
||||||
|
{
|
||||||
|
InitializeMask();
|
||||||
|
for (int currentY = 0; currentY < currentSprite.Bounds.Height; currentY++)
|
||||||
|
{
|
||||||
|
for (int currentX = 0; currentX < currentSprite.Bounds.Width; currentX++)
|
||||||
|
{
|
||||||
|
highlightMask.SetPixel(currentX + currentSprite.Bounds.X, currentY + currentSprite.Bounds.Y, Color.Transparent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializeMask()
|
||||||
|
{
|
||||||
|
if (baseMask == null)
|
||||||
|
{
|
||||||
|
highlightMask = new DirectBitmap(spriteSheetViewer.Image.Width, spriteSheetViewer.Image.Height);
|
||||||
|
for (int currentY = 0; currentY < highlightMask.Height; currentY++)
|
||||||
|
{
|
||||||
|
for (int currentX = 0; currentX < highlightMask.Width; currentX++)
|
||||||
|
{
|
||||||
|
highlightMask.SetPixel(currentX, currentY, Color.Gray);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
baseMask = new DirectBitmap(highlightMask);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
highlightMask.CopyBitmap(baseMask);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SurroundWithTranslucentRects(Rectangle rect, Color color, Graphics graphics)
|
private void SurroundWithTranslucentRects(Rectangle rect, Color color, Graphics graphics)
|
||||||
@@ -191,7 +266,10 @@ namespace SpriteMapEditor
|
|||||||
{
|
{
|
||||||
highlight = !highlight;
|
highlight = !highlight;
|
||||||
if (highlight)
|
if (highlight)
|
||||||
|
{
|
||||||
fillButton.Text = "No Highlight";
|
fillButton.Text = "No Highlight";
|
||||||
|
UpdateHighlightMask();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
fillButton.Text = "Highlight";
|
fillButton.Text = "Highlight";
|
||||||
spriteSheetViewer.Refresh();
|
spriteSheetViewer.Refresh();
|
||||||
@@ -224,6 +302,7 @@ namespace SpriteMapEditor
|
|||||||
if (loadingSprite)
|
if (loadingSprite)
|
||||||
return;
|
return;
|
||||||
UpdateSpriteBounds();
|
UpdateSpriteBounds();
|
||||||
|
UpdateHighlightMask();
|
||||||
spriteSheetViewer.Refresh();
|
spriteSheetViewer.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -232,6 +311,7 @@ namespace SpriteMapEditor
|
|||||||
if (loadingSprite)
|
if (loadingSprite)
|
||||||
return;
|
return;
|
||||||
UpdateSpriteBounds();
|
UpdateSpriteBounds();
|
||||||
|
UpdateHighlightMask();
|
||||||
spriteSheetViewer.Refresh();
|
spriteSheetViewer.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,6 +320,7 @@ namespace SpriteMapEditor
|
|||||||
if (loadingSprite)
|
if (loadingSprite)
|
||||||
return;
|
return;
|
||||||
UpdateSpriteBounds();
|
UpdateSpriteBounds();
|
||||||
|
UpdateHighlightMask();
|
||||||
spriteSheetViewer.Refresh();
|
spriteSheetViewer.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,6 +329,7 @@ namespace SpriteMapEditor
|
|||||||
if (loadingSprite)
|
if (loadingSprite)
|
||||||
return;
|
return;
|
||||||
UpdateSpriteBounds();
|
UpdateSpriteBounds();
|
||||||
|
UpdateHighlightMask();
|
||||||
spriteSheetViewer.Refresh();
|
spriteSheetViewer.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,11 +358,12 @@ namespace SpriteMapEditor
|
|||||||
{
|
{
|
||||||
currentSprite = sprites[spriteList.SelectedIndex];
|
currentSprite = sprites[spriteList.SelectedIndex];
|
||||||
LoadSpriteEditorValues();
|
LoadSpriteEditorValues();
|
||||||
|
UpdateHighlightMask();
|
||||||
spriteSheetViewer.Refresh();
|
spriteSheetViewer.Refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveMapButton_Click(object sender, EventArgs e)
|
private void saveMapAsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var exportDict = new Dictionary<string, SpriteMapRegion>();
|
var exportDict = new Dictionary<string, SpriteMapRegion>();
|
||||||
foreach (SpriteMapRegion sprite in sprites)
|
foreach (SpriteMapRegion sprite in sprites)
|
||||||
@@ -299,19 +382,51 @@ namespace SpriteMapEditor
|
|||||||
|
|
||||||
if (saveMapDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
if (saveMapDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
||||||
{
|
{
|
||||||
using (XmlWriter writer = XmlWriter.Create(saveMapDialog.FileName))
|
CurrentSpriteMapFileLocation = saveMapDialog.FileName;
|
||||||
|
|
||||||
|
using (XmlWriter writer = XmlWriter.Create(CurrentSpriteMapFileLocation))
|
||||||
|
{
|
||||||
|
IntermediateSerializer.Serialize(writer, exportDict, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
saveSpriteMapToolStripMenuItem.Enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveSpriteMapToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (CurrentSpriteMapFileLocation != null)
|
||||||
|
{
|
||||||
|
var exportDict = new Dictionary<string, SpriteMapRegion>();
|
||||||
|
foreach (SpriteMapRegion sprite in sprites)
|
||||||
|
{
|
||||||
|
if (exportDict.ContainsKey(sprite.Name))
|
||||||
|
{
|
||||||
|
string errorMessage = "Duplicate names found! Please ensure all sprites have unique names.";
|
||||||
|
string caption = "Save Aborted";
|
||||||
|
MessageBoxButtons saveError = MessageBoxButtons.OK;
|
||||||
|
|
||||||
|
MessageBox.Show(errorMessage, caption, saveError);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
exportDict.Add(sprite.Name, sprite);
|
||||||
|
}
|
||||||
|
|
||||||
|
using (XmlWriter writer = XmlWriter.Create(CurrentSpriteMapFileLocation))
|
||||||
{
|
{
|
||||||
IntermediateSerializer.Serialize(writer, exportDict, null);
|
IntermediateSerializer.Serialize(writer, exportDict, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadMapButton_Click(object sender, EventArgs e)
|
private void loadMapToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if(loadMapDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
if(loadMapDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
||||||
{
|
{
|
||||||
|
CurrentSpriteMapFileLocation = loadMapDialog.FileName;
|
||||||
|
|
||||||
Dictionary<string, SpriteMapRegion> loadedSpriteMap;
|
Dictionary<string, SpriteMapRegion> loadedSpriteMap;
|
||||||
using (XmlReader xmlRead = XmlReader.Create(loadMapDialog.FileName))
|
using (XmlReader xmlRead = XmlReader.Create(CurrentSpriteMapFileLocation))
|
||||||
{
|
{
|
||||||
loadedSpriteMap = IntermediateSerializer.Deserialize<Dictionary<string, SpriteMapRegion>>(xmlRead, null);
|
loadedSpriteMap = IntermediateSerializer.Deserialize<Dictionary<string, SpriteMapRegion>>(xmlRead, null);
|
||||||
}
|
}
|
||||||
@@ -343,13 +458,13 @@ namespace SpriteMapEditor
|
|||||||
newPosition.Y /= zoomLevel;
|
newPosition.Y /= zoomLevel;
|
||||||
int differenceX = newPosition.X - oldPosition.X;
|
int differenceX = newPosition.X - oldPosition.X;
|
||||||
int differenceY = newPosition.Y - oldPosition.Y;
|
int differenceY = newPosition.Y - oldPosition.Y;
|
||||||
Console.WriteLine(differenceX + ", " + differenceY);
|
|
||||||
var newBounds = currentSprite.Bounds;
|
var newBounds = currentSprite.Bounds;
|
||||||
newBounds.X += differenceX;
|
newBounds.X += differenceX;
|
||||||
newBounds.Y += differenceY;
|
newBounds.Y += differenceY;
|
||||||
|
|
||||||
currentSprite.Bounds = newBounds;
|
currentSprite.Bounds = newBounds;
|
||||||
oldPosition = newPosition;
|
oldPosition = newPosition;
|
||||||
|
UpdateHighlightMask();
|
||||||
spriteSheetViewer.Refresh();
|
spriteSheetViewer.Refresh();
|
||||||
LoadSpriteEditorValues();
|
LoadSpriteEditorValues();
|
||||||
}
|
}
|
||||||
@@ -423,5 +538,27 @@ namespace SpriteMapEditor
|
|||||||
spriteList.SelectedIndex--;
|
spriteList.SelectedIndex--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void editingOriginCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
editingOrigin = editingOriginCheckBox.Checked;
|
||||||
|
|
||||||
|
if (editingOrigin)
|
||||||
|
{
|
||||||
|
originXPosLabel.Enabled = true;
|
||||||
|
originXPosBox.Enabled = true;
|
||||||
|
originYPosLabel.Enabled = true;
|
||||||
|
originYPosBox.Enabled = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
originXPosLabel.Enabled = false;
|
||||||
|
originXPosBox.Enabled = false;
|
||||||
|
originYPosLabel.Enabled = false;
|
||||||
|
originYPosBox.Enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
spriteViewerPanel.Refresh();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,56 +126,7 @@
|
|||||||
<metadata name="saveMapDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="saveMapDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>325, 17</value>
|
<value>325, 17</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<data name="spriteSheetViewer.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<value>461, 17</value>
|
||||||
<value>
|
</metadata>
|
||||||
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
|
|
||||||
</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
||||||
+20
@@ -60,6 +60,26 @@ namespace SpriteMapEditor.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap originPointer_black {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("originPointer_black", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap originPointer_white {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("originPointer_white", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -118,7 +118,13 @@
|
|||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="originPointer_black" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\originPointer_black.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="originPointer_white" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\originPointer_white.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="transparentUI" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="transparentUI" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\transparentui.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\transparentUI.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 977 B |
Binary file not shown.
|
After Width: | Height: | Size: 977 B |
@@ -51,6 +51,7 @@
|
|||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="DirectBitmap.cs" />
|
||||||
<Compile Include="Form1.cs">
|
<Compile Include="Form1.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -88,17 +89,20 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="App.config" />
|
<None Include="App.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Resources\transparentUI.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Content Include="transparentUI.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\QURO\QURO.csproj">
|
<ProjectReference Include="..\QURO\QURO.csproj">
|
||||||
<Project>{4581e0c8-b14a-454d-9a7b-52d37535e7e9}</Project>
|
<Project>{4581e0c8-b14a-454d-9a7b-52d37535e7e9}</Project>
|
||||||
<Name>QURO</Name>
|
<Name>QURO</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Resources\originPointer_black.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Resources\originPointer_white.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Resources\transparentUI.png" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
</Project>
|
</Project>
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.8 KiB |
Reference in New Issue
Block a user