1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.IO;
5 
6 namespace FreeImageNETUnitTest
7 {
8 	internal enum ImageType : byte
9 	{
10 		Even,
11 		Odd,
12 		JPEG,
13 		Metadata,
14 		Multipaged
15 	}
16 
17 	internal enum ImageColorType : byte
18 	{
19 		Type_01_Dither,
20 		Type_01_Threshold,
21 		Type_04,
22 		Type_04_Greyscale_MinIsBlack,
23 		Type_04_Greyscale_Unordered,
24 		Type_08,
25 		Type_08_Greyscale_MinIsBlack,
26 		Type_08_Greyscale_Unordered,
27 		Type_16_555,
28 		Type_16_565,
29 		Type_24,
30 		Type_32,
31 	}
32 
33 	internal class ImageManager
34 	{
35 		public readonly string baseDirectory = null;
36 
ImageManager()37 		public ImageManager()
38 			: this(new DirectoryInfo(Environment.CurrentDirectory).Parent.Parent.Parent.FullName + @"\UnitTestData\Images\")
39 		{
40 		}
41 
ImageManager(string baseDirectory)42 		public ImageManager(string baseDirectory)
43 		{
44 			if (!Directory.Exists(baseDirectory))
45 				throw new DirectoryNotFoundException();
46 			this.baseDirectory = baseDirectory;
47 		}
48 
GetBitmapPath(ImageType type, ImageColorType colorType)49 		public string GetBitmapPath(ImageType type, ImageColorType colorType)
50 		{
51 			string filename = null;
52 
53 			switch (type)
54 			{
55 				case ImageType.Even:
56 					switch (colorType)
57 					{
58 						case ImageColorType.Type_01_Dither:
59 							filename = baseDirectory + @"Even\Image_01_dither.tif";
60 							break;
61 						case ImageColorType.Type_01_Threshold:
62 							filename = baseDirectory + @"Even\Image_01_threshold.tif";
63 							break;
64 						case ImageColorType.Type_04:
65 							filename = baseDirectory + @"Even\Image_04.tif";
66 							break;
67 						case ImageColorType.Type_04_Greyscale_MinIsBlack:
68 							filename = baseDirectory + @"Even\Image_04_gs_minisblack.tif";
69 							break;
70 						case ImageColorType.Type_04_Greyscale_Unordered:
71 							filename = baseDirectory + @"Even\Image_04_gs_unordered.tif";
72 							break;
73 						case ImageColorType.Type_08:
74 							filename = baseDirectory + @"Even\Image_08.tif";
75 							break;
76 						case ImageColorType.Type_08_Greyscale_MinIsBlack:
77 							filename = baseDirectory + @"Even\Image_08_gs_minisblack.tif";
78 							break;
79 						case ImageColorType.Type_08_Greyscale_Unordered:
80 							filename = baseDirectory + @"Even\Image_08_gs_unordered.tif";
81 							break;
82 						case ImageColorType.Type_16_555:
83 							filename = baseDirectory + @"Even\Image_16_555.bmp";
84 							break;
85 						case ImageColorType.Type_16_565:
86 							filename = baseDirectory + @"Even\Image_16_565.bmp";
87 							break;
88 						case ImageColorType.Type_24:
89 							filename = baseDirectory + @"Even\Image_24.tif";
90 							break;
91 						case ImageColorType.Type_32:
92 							filename = baseDirectory + @"Even\Image_32.tif";
93 							break;
94 					}
95 					break;
96 				case ImageType.Odd:
97 					switch (colorType)
98 					{
99 						case ImageColorType.Type_01_Dither:
100 							filename = baseDirectory + @"Odd\Image_01_dither.tif";
101 							break;
102 						case ImageColorType.Type_01_Threshold:
103 							filename = baseDirectory + @"Odd\Image_01_threshold.tif";
104 							break;
105 						case ImageColorType.Type_04:
106 							filename = baseDirectory + @"Odd\Image_04.tif";
107 							break;
108 						case ImageColorType.Type_04_Greyscale_MinIsBlack:
109 							filename = baseDirectory + @"Odd\Image_04_gs_minisblack.tif";
110 							break;
111 						case ImageColorType.Type_04_Greyscale_Unordered:
112 							filename = baseDirectory + @"Odd\Image_04_gs_unordered.tif";
113 							break;
114 						case ImageColorType.Type_08:
115 							filename = baseDirectory + @"Odd\Image_08.tif";
116 							break;
117 						case ImageColorType.Type_08_Greyscale_MinIsBlack:
118 							filename = baseDirectory + @"Odd\Image_08_gs_minisblack.tif";
119 							break;
120 						case ImageColorType.Type_08_Greyscale_Unordered:
121 							filename = baseDirectory + @"Odd\Image_08_gs_unordered.tif";
122 							break;
123 						case ImageColorType.Type_16_555:
124 							filename = baseDirectory + @"Odd\Image_16_555.bmp";
125 							break;
126 						case ImageColorType.Type_16_565:
127 							filename = baseDirectory + @"Odd\Image_16_565.bmp";
128 							break;
129 						case ImageColorType.Type_24:
130 							filename = baseDirectory + @"Odd\Image_24.tif";
131 							break;
132 					}
133 					break;
134 				case ImageType.JPEG:
135 					filename = baseDirectory + @"JPEG\Image.jpg";
136 					break;
137 				case ImageType.Metadata:
138 					filename = baseDirectory + @"Metadata\exif.jpg";
139 					break;
140 				case ImageType.Multipaged:
141 					filename = baseDirectory + @"Multipaged\Image.tif";
142 					break;
143 			}
144 			return filename;
145 		}
146 
GetBitmap(ImageType type, ImageColorType colorType)147 		public FreeImageAPI.FIBITMAP GetBitmap(ImageType type, ImageColorType colorType)
148 		{
149 			FreeImageAPI.FIBITMAP result = new FreeImageAPI.FIBITMAP();
150 			string filename = GetBitmapPath(type, colorType);
151 			if (!String.IsNullOrEmpty(filename) && File.Exists(filename))
152 				result = FreeImageAPI.FreeImage.LoadEx(filename);
153 			return result;
154 		}
155 	}
156 }