Skip to content

Commit

Permalink
ChaotixSpriteEdit: Adding import from ROM, fill tool, center button.
Browse files Browse the repository at this point in the history
  • Loading branch information
MainMemory committed Jun 22, 2015
1 parent 5be1fc5 commit de9873c
Show file tree
Hide file tree
Showing 14 changed files with 673 additions and 208 deletions.
22 changes: 22 additions & 0 deletions ChaotixSpriteEdit/ChaotixSpriteEdit.csproj
Expand Up @@ -46,6 +46,12 @@
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SpriteAddressDialog.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SpriteAddressDialog.Designer.cs">
<DependentUpon>SpriteAddressDialog.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
Expand All @@ -57,7 +63,11 @@
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="SpriteAddressDialog.resx">
<DependentUpon>SpriteAddressDialog.cs</DependentUpon>
</EmbeddedResource>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
Expand All @@ -74,6 +84,18 @@
<Name>SonLVL.API</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Resources\fill.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\pencil.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\fillcur.cur" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\pencilcur.cur" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
Expand Down
208 changes: 145 additions & 63 deletions ChaotixSpriteEdit/MainForm.Designer.cs

Large diffs are not rendered by default.

81 changes: 74 additions & 7 deletions ChaotixSpriteEdit/MainForm.cs
Expand Up @@ -22,6 +22,7 @@ public MainForm()
int selectedColor;
Sprite sprite = new Sprite(new BitmapBits(32, 32), new Point(-16, -16));
string filename;
Cursor pencilcur, fillcur;

private void MainForm_Load(object sender, EventArgs e)
{
Expand All @@ -33,6 +34,11 @@ private void MainForm_Load(object sender, EventArgs e)
using (BinaryReader br = new BinaryReader(fs))
for (int i = 0; i < 256; i++)
palette.Entries[i] = Color.FromArgb(br.ReadByte(), br.ReadByte(), br.ReadByte());
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(Properties.Resources.pencilcur))
pencilcur = new Cursor(ms);
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(Properties.Resources.fillcur))
fillcur = new Cursor(ms);
spriteImagePanel.Cursor = pencilcur;
if (Program.Arguments.Count > 0)
LoadSprite(Program.Arguments[0]);
}
Expand Down Expand Up @@ -67,7 +73,7 @@ private void openToolStripMenuItem_Click(object sender, EventArgs e)

private void LoadSprite(string filename)
{
sprite = Sprite.LoadChaotixSprites(filename)[0];
sprite = Sprite.LoadChaotixSprite(filename);
spriteImagePanel.Size = new Size(sprite.Width * 4, sprite.Height * 4);
offsetXNumericUpDown.Value = sprite.X;
offsetYNumericUpDown.Value = sprite.Y;
Expand All @@ -76,9 +82,27 @@ private void LoadSprite(string filename)
spriteImagePanel.Invalidate();
}

private void importFromROMToolStripMenuItem_Click(object sender, EventArgs e)
{
using (OpenFileDialog dlg = new OpenFileDialog() { DefaultExt = "bin", Filter = "ROM Files|*.bin;*.32x|All Files|*.*", RestoreDirectory = true })
if (dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
{
byte[] file = File.ReadAllBytes(dlg.FileName);
using (SpriteAddressDialog adlg = new SpriteAddressDialog(file.Length))
if (adlg.ShowDialog(this)== System.Windows.Forms.DialogResult.OK)
{
sprite = Sprite.LoadChaotixSprite(file, adlg.Address);
spriteImagePanel.Size = new Size(sprite.Width * 4, sprite.Height * 4);
offsetXNumericUpDown.Value = sprite.X;
offsetYNumericUpDown.Value = sprite.Y;
spriteImagePanel.Invalidate();
}
}
}

private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
Sprite.SaveChaotixSprites(filename, new[] { sprite });
sprite.SaveChaotixSprite(filename);
}

private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
Expand All @@ -87,7 +111,7 @@ private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
if (dlg.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
{
filename = dlg.FileName;
Sprite.SaveChaotixSprites(filename, new[] { sprite });
sprite.SaveChaotixSprite(filename);
}
}

Expand Down Expand Up @@ -176,6 +200,12 @@ private void offsetYNumericUpDown_ValueChanged(object sender, EventArgs e)
spriteImagePanel.Invalidate();
}

private void centerButton_Click(object sender, EventArgs e)
{
offsetXNumericUpDown.Value = -sprite.Width / 2;
offsetYNumericUpDown.Value = -sprite.Height / 2;
}

private void showCenterCheckBox_CheckedChanged(object sender, EventArgs e)
{
spriteImagePanel.Invalidate();
Expand All @@ -193,13 +223,40 @@ private void spriteImagePanel_Paint(object sender, PaintEventArgs e)
}
}

private Tool tool;
private void pencilToolStripButton_Click(object sender, EventArgs e)
{
pencilToolStripButton.Checked = true;
fillToolStripButton.Checked = false;
tool = Tool.Pencil;
spriteImagePanel.Cursor = pencilcur;
}

private void fillToolStripButton_Click(object sender, EventArgs e)
{
pencilToolStripButton.Checked = false;
fillToolStripButton.Checked = true;
tool = Tool.Fill;
spriteImagePanel.Cursor = fillcur;
}

private void spriteImagePanel_MouseDown(object sender, MouseEventArgs e)
{
switch (e.Button)
{
case MouseButtons.Left:
sprite.Image[e.X / 4, e.Y / 4] = (byte)selectedColor;
spriteImagePanel.Invalidate();
switch (tool)
{
case Tool.Pencil:
sprite.Image[e.X / 4, e.Y / 4] = (byte)selectedColor;
lastpoint = new Point(e.X / 4, e.Y / 4);
spriteImagePanel.Invalidate();
break;
case Tool.Fill:
sprite.Image.FloodFill((byte)selectedColor, e.X / 4, e.Y / 4);
spriteImagePanel.Invalidate();
break;
}
break;
case MouseButtons.Right:
selectedColor = sprite.Image[e.X / 4, e.Y / 4];
Expand All @@ -208,14 +265,20 @@ private void spriteImagePanel_MouseDown(object sender, MouseEventArgs e)
}
}

Point lastpoint;
private void spriteImagePanel_MouseMove(object sender, MouseEventArgs e)
{
if (new Rectangle(Point.Empty, spriteImagePanel.Size).Contains(e.Location))
switch (e.Button)
{
case MouseButtons.Left:
sprite.Image[e.X / 4, e.Y / 4] = (byte)selectedColor;
spriteImagePanel.Invalidate();
if (tool == Tool.Pencil)
{
sprite.Image.DrawLine((byte)selectedColor, lastpoint, new Point(e.X / 4, e.Y / 4));
sprite.Image[e.X / 4, e.Y / 4] = (byte)selectedColor;
spriteImagePanel.Invalidate();
lastpoint = new Point(e.X / 4, e.Y / 4);
}
break;
case MouseButtons.Right:
selectedColor = sprite.Image[e.X / 4, e.Y / 4];
Expand Down Expand Up @@ -255,6 +318,8 @@ private void importButton_Click(object sender, EventArgs e)
sprite.Image = bmpbits;
}
spriteImagePanel.Size = new Size(sprite.Width * 4, sprite.Height * 4);
offsetXNumericUpDown.Value = -sprite.Width / 2;
offsetYNumericUpDown.Value = -sprite.Height / 2;
spriteImagePanel.Invalidate();
}
}
Expand All @@ -266,5 +331,7 @@ private void exportButton_Click(object sender, EventArgs e)
using (Bitmap bmp = sprite.Image.ToBitmap(palette))
bmp.Save(dlg.FileName);
}

enum Tool { Pencil, Fill }
}
}
25 changes: 20 additions & 5 deletions ChaotixSpriteEdit/MainForm.resx
Expand Up @@ -126,9 +126,6 @@
<metadata name="toolStripSeparator1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="toolStripSeparator1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="panel1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
Expand All @@ -141,15 +138,33 @@
<metadata name="label1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="label2.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label2.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="label1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="panel2.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="panel3.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="toolStrip1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>321, 17</value>
</metadata>
<metadata name="panel3.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="toolStrip1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>321, 17</value>
</metadata>
<metadata name="paletteContextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>132, 17</value>
</metadata>
Expand Down

0 comments on commit de9873c

Please sign in to comment.