summaryrefslogtreecommitdiff
path: root/MapEd/TileStrip.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MapEd/TileStrip.cs')
-rw-r--r--MapEd/TileStrip.cs113
1 files changed, 113 insertions, 0 deletions
diff --git a/MapEd/TileStrip.cs b/MapEd/TileStrip.cs
new file mode 100644
index 0000000..ac77188
--- /dev/null
+++ b/MapEd/TileStrip.cs
@@ -0,0 +1,113 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MapEd
+{
+ public class TileStrip : IDisposable
+ {
+ private bool disposedValue = false;
+ private string filename;
+ private Image image;
+ private Bitmap[] bitmaps;
+ private Image[] images;
+
+ public TileStrip(string path, int size)
+ {
+ filename = path;
+ image = Image.FromFile(path);
+ bitmaps = new Bitmap[image.Width / size];
+ images = new Image[bitmaps.Length];
+ Bitmap bmp = new Bitmap(image);
+
+ for(int f = 0; f < bitmaps.Length; f++)
+ {
+ bitmaps[f] = bmp.Clone(new Rectangle(f*size, 0, size, size), System.Drawing.Imaging.PixelFormat.DontCare);
+ images[f] = Image.FromHbitmap(bitmaps[f].GetHbitmap());
+ }
+
+ bmp.Dispose();
+ }
+
+ public Image Strip
+ {
+ get
+ {
+ return image;
+ }
+ }
+
+ public int Count
+ {
+ get
+ {
+ return bitmaps.Length;
+ }
+ }
+
+ public Bitmap GetBitmap(int no)
+ {
+ return bitmaps[no];
+ }
+
+ public Image GetImage(int no)
+ {
+ return images[no];
+ }
+
+ public string SourceFile
+ {
+ get
+ {
+ return filename;
+ }
+ }
+
+ public Image[] Images
+ {
+ get
+ {
+ return images;
+ }
+ }
+
+ public Bitmap[] Bitmaps
+ {
+ get
+ {
+ return bitmaps;
+ }
+ }
+
+ protected virtual void Dispose(bool disposing)
+ {
+ if (!disposedValue)
+ {
+ if (disposing)
+ {
+ image.Dispose();
+
+ foreach(Bitmap b in bitmaps)
+ {
+ b.Dispose();
+ }
+
+ foreach(Image i in images)
+ {
+ i.Dispose();
+ }
+ }
+
+ disposedValue = true;
+ }
+ }
+
+ public void Dispose()
+ {
+ Dispose(true);
+ }
+ }
+}