Index: /trunk/MacFaceFloat/ConfigurationForm.cs
===================================================================
--- /trunk/MacFaceFloat/ConfigurationForm.cs	(revision 17)
+++ /trunk/MacFaceFloat/ConfigurationForm.cs	(revision 18)
@@ -383,37 +383,22 @@
 		private void AddPreviewListItem(string path)
 		{
-			using (Bitmap tmpImage = new Bitmap(128, 128)) 
-			{
-				try 
-				{
-					FaceDef faceDef = new FaceDef(path);
-					PartList partList = faceDef.Pattern(FaceDef.PatternSuite.Normal, 10);
-					
-					using (Graphics g = Graphics.FromImage(tmpImage)) 
-					{
-						g.Clear(Color.White);
-						g.DrawRectangle(new Pen(Color.LightGray), 0, 0, 127, 127);
-						foreach (Part part in partList) 
-						{
-							g.DrawImage(part.Image,
-								part.Point.X, part.Point.Y,
-								part.Image.Size.Width, part.Image.Size.Height);
-						}
-					}
-					imageListFacePreviews.Images.Add(tmpImage);
-
-					ListViewItem item = listViewFaces.Items.Add(faceDef.Title, imageListFacePreviews.Images.Count-1);
-					item.SubItems.Add(path);    // 0: pX
-					item.SubItems.Add(faceDef.Author);  // 1: »ìÒ
-					item.SubItems.Add(faceDef.Version); // 2: o[W
-					item.SubItems.Add(
-						(faceDef.WebSite != null ?
-						faceDef.WebSite.ToString() : "")); // 3: EFuTCg
-				} 
-				catch (Exception ex) 
-				{
-					// TODO: Exception ©çàÁÆ·ßéB
-					MessageBox.Show(ex.ToString(), "MacFace for Windows", MessageBoxButtons.OK, MessageBoxIcon.Error);
-				}
+			try 
+			{
+				FaceDef faceDef = new FaceDef(path);
+				Image image = faceDef.PatternImage(FaceDef.PatternSuite.Normal, 10);
+				imageListFacePreviews.Images.Add(image);
+
+				ListViewItem item = listViewFaces.Items.Add(faceDef.Title, imageListFacePreviews.Images.Count-1);
+				item.SubItems.Add(path);    // 0: pX
+				item.SubItems.Add(faceDef.Author);  // 1: »ìÒ
+				item.SubItems.Add(faceDef.Version); // 2: o[W
+				item.SubItems.Add(
+					(faceDef.WebSite != null ?
+					faceDef.WebSite.ToString() : "")); // 3: EFuTCg
+			} 
+			catch (Exception ex) 
+			{
+				// TODO: Exception ©çàÁÆ·ßéB
+				MessageBox.Show(ex.ToString(), "MacFace for Windows", MessageBoxButtons.OK, MessageBoxIcon.Error);
 			}
 		}
Index: /trunk/MacFaceFloat/MainForm.cs
===================================================================
--- /trunk/MacFaceFloat/MainForm.cs	(revision 17)
+++ /trunk/MacFaceFloat/MainForm.cs	(revision 18)
@@ -211,11 +211,7 @@
 				
 			if (prevUsage/10 != usage/10) {
-				this.Graphics.Clear(Color.FromArgb(0, 0, 0, 0));
-				foreach (Part part in _currentFaceDef.Pattern(FaceDef.PatternSuite.Normal, usage/10))
-				{
-					this.Graphics.DrawImage(part.Image,
-						part.Point.X, part.Point.Y,
-						part.Image.Size.Width, part.Image.Size.Height);
-				}
+				Graphics g = this.Graphics;
+				g.Clear(Color.FromArgb(0, 0, 0, 0));
+				_currentFaceDef.DrawPattern(g, FaceDef.PatternSuite.Normal, usage/10);
 				this.Update();
 			}
Index: /trunk/MacFaceLibrary/FaceDef.cs
===================================================================
--- /trunk/MacFaceLibrary/FaceDef.cs	(revision 17)
+++ /trunk/MacFaceLibrary/FaceDef.cs	(revision 18)
@@ -8,4 +8,5 @@
 using System.IO;
 using System.Collections;
+using System.Drawing;
 
 namespace MacFace
@@ -35,16 +36,19 @@
 		private const int PatternRows = 3;
 
-		private string _path    = "";
-		private string _title   = "";
-		private string _author  = "";
-		private string _version = ""; /*Version*/
-		private Uri    _webSite = null;
-
-		internal PartList _parts = new PartList();
-		internal PartList[][] _patternSuites;
-		internal PartList _makers = new PartList();
-
-
-		// ctor
+		private string _path;
+		private string _title;
+		private string _author;
+		private string _version;
+		private Uri    _webSite;
+
+		private Part[] _parts;
+		private Part[][][] _patternSuites;
+		private Part[] _makers;
+
+
+		/// <summary>
+		/// RXgN^B
+		/// </summary>
+		/// <param name="path">çp^[t@CÌpX</param>
 		public FaceDef(string path)
 		{
@@ -75,4 +79,5 @@
 			}
 
+			_parts = new Part[partDefList.Count];
 			for (int i = 0; i < partDefList.Count; i++)
 			{
@@ -81,19 +86,20 @@
 				int x = (int)partDef["pos x"];
 				int y = (int)partDef["pos y"];
-				_parts.Add(new Part(System.IO.Path.Combine(path, filename), x, y));
+				_parts[i] = new Part(System.IO.Path.Combine(path, filename), x, y);
 			}
 
-			_patternSuites = new PartList[PatternCols][];
-			ArrayList patternDefSuites = def["pattern"] as ArrayList;
+			ArrayList suiteDefList = (ArrayList)def["pattern"];
+			_patternSuites = new Part[PatternRows][][];
 			for (int i = 0; i < PatternRows; i++) 
 			{
-				PartList[] suite = new PartList[PatternCols];
-				ArrayList patternDefList = patternDefSuites[i] as ArrayList;
+				ArrayList suiteDef = (ArrayList)suiteDefList[i];
+				Part[][] suite = new Part[PatternCols][];
 				for (int j = 0; j < PatternCols; j++) 
 				{
-					PartList pattern = new PartList();
-					foreach (int partNo in (ArrayList)patternDefList[j]) 
+					ArrayList patternDef = (ArrayList)suiteDef[j];
+					Part[] pattern = new Part[patternDef.Count];
+					for (int k = 0; k < patternDef.Count; k++) 
 					{
-						pattern.Add(_parts[partNo]);
+						pattern[k] = _parts[(int)patternDef[k]];
 					}
 					suite[j] = pattern;
@@ -103,14 +109,4 @@
 		}
 
-		public PartList Markers
-		{
-			get { return _makers; }
-		}
-
-		public PartList Parts
-		{
-			get { return _parts; }
-		}
-
 		public Uri WebSite
 		{
@@ -138,7 +134,22 @@
 		}
 
-		public PartList Pattern(PatternSuite suite, int no)
-		{
-			return _patternSuites[(int)suite][no];
+		public void DrawPattern(Graphics g, PatternSuite suite, int no)
+		{
+			Part[] pattern = _patternSuites[(int)suite][no];
+			foreach (Part part in pattern)
+			{
+				g.DrawImage(part.Image,
+					part.Point.X, part.Point.Y,
+					part.Image.Size.Width, part.Image.Size.Height);
+			}
+		}
+
+		public Image PatternImage(PatternSuite suite, int no)
+		{
+			Bitmap image = new Bitmap(128, 128);
+			Graphics g = Graphics.FromImage(image);
+			DrawPattern(g, suite, no);
+			g.Dispose();
+			return image;
 		}
 	}
Index: /trunk/MacFaceLibrary/MacFaceLibrary.csproj
===================================================================
--- /trunk/MacFaceLibrary/MacFaceLibrary.csproj	(revision 17)
+++ /trunk/MacFaceLibrary/MacFaceLibrary.csproj	(revision 18)
@@ -115,9 +115,4 @@
                 />
                 <File
-                    RelPath = "PartList.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
                     RelPath = "PropertyList.cs"
                     SubType = "Code"
Index: unk/MacFaceLibrary/PartList.cs
===================================================================
--- /trunk/MacFaceLibrary/PartList.cs	(revision 17)
+++ 	(revision )
@@ -1,67 +1,0 @@
-/*
- * PartList.cs
- * $Id$
- * 
- */
-
-using System;
-using System.Collections;
-
-namespace MacFace
-{
-	/// <summary>
-	/// PartList ÌTvÌà¾Å·B
-	/// </summary>
-	public class PartList : ArrayList
-	{
-		public PartList()
-		{
-		}
-		public PartList(ArrayList parts)
-		{
-			base.AddRange(parts);
-		}
-		public PartList(Part[] parts)
-		{
-			this.AddRange(parts);
-		}
-
-		//
-		// overloads
-		//
-		public int Add(Part value)
-		{
-			return base.Add (value);
-		}
-
-		public void AddRange(Part[] c)
-		{
-			base.AddRange (c);
-		}
-
-		public void Remove(Part obj)
-		{
-			base.Remove (obj);
-		}
-
-		public bool Contains(Part item)
-		{
-			return base.Contains (item);
-		}
-
-		public int IndexOf(Part value)
-		{
-			return base.IndexOf (value);
-		}
-
-		public int IndexOf(Part value, int startIndex)
-		{
-			return base.IndexOf (value, startIndex);
-		}
-		
-		public void CopyTo(Part[] array)
-		{
-			base.CopyTo (array);
-		}
-	}
-}
