You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							897 lines
						
					
					
						
							24 KiB
						
					
					
				
			
		
		
	
	
							897 lines
						
					
					
						
							24 KiB
						
					
					
				using System; | 
						|
using System.Collections.Generic; | 
						|
using System.Drawing; | 
						|
using System.Drawing.Drawing2D; | 
						|
using System.Drawing.Imaging; | 
						|
using System.Globalization; | 
						|
using System.IO; | 
						|
using System.Runtime.InteropServices; | 
						|
using System.Text; | 
						|
using System.Xml; | 
						|
using System.Xml.Serialization; | 
						|
using ArcShapeFileDLL; | 
						|
using Newtonsoft.Json; | 
						|
using Newtonsoft.Json.Converters; | 
						|
using Newtonsoft.Json.Serialization; | 
						|
 | 
						|
namespace Kingo.Framework.LayerStyleConvert.XSDClass | 
						|
{ | 
						|
	// Token: 0x0200006A RID: 106 | 
						|
	public class CommonMethod | 
						|
	{ | 
						|
		// Token: 0x06000400 RID: 1024 RVA: 0x00016CFC File Offset: 0x00014EFC | 
						|
		public static string SerializerToXml<T>(T obj) | 
						|
		{ | 
						|
			XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); | 
						|
			string result; | 
						|
			using (MemoryStream memoryStream = new MemoryStream()) | 
						|
			{ | 
						|
				XmlSerializerNamespaces xmlSerializerNamespaces = new XmlSerializerNamespaces(); | 
						|
				xmlSerializerNamespaces.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance"); | 
						|
				xmlSerializerNamespaces.Add("xs", "http://www.w3.org/2001/XMLSchema"); | 
						|
				xmlSerializerNamespaces.Add("typens", "http://www.esri.com/schemas/ArcGIS/10.1"); | 
						|
				xmlSerializer.Serialize(memoryStream, obj, xmlSerializerNamespaces); | 
						|
				string @string = Encoding.UTF8.GetString(memoryStream.ToArray()); | 
						|
				result = @string; | 
						|
			} | 
						|
			return result; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000401 RID: 1025 RVA: 0x00016DA4 File Offset: 0x00014FA4 | 
						|
		public static string SerializerToXmlNoHeder<T>(T Obj) | 
						|
		{ | 
						|
			XmlWriterSettings xmlWriterSettings = new XmlWriterSettings(); | 
						|
			xmlWriterSettings.OmitXmlDeclaration = true; | 
						|
			xmlWriterSettings.Encoding = Encoding.Default; | 
						|
			string @string; | 
						|
			using (MemoryStream memoryStream = new MemoryStream()) | 
						|
			{ | 
						|
				using (XmlWriter xmlWriter = XmlWriter.Create(memoryStream, xmlWriterSettings)) | 
						|
				{ | 
						|
					XmlSerializerNamespaces xmlSerializerNamespaces = new XmlSerializerNamespaces(); | 
						|
					xmlSerializerNamespaces.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance"); | 
						|
					xmlSerializerNamespaces.Add("xs", "http://www.w3.org/2001/XMLSchema"); | 
						|
					xmlSerializerNamespaces.Add("typens", "http://www.esri.com/schemas/ArcGIS/10.1"); | 
						|
					XmlSerializer xmlSerializer = new XmlSerializer(Obj.GetType()); | 
						|
					xmlSerializer.Serialize(xmlWriter, Obj, xmlSerializerNamespaces); | 
						|
				} | 
						|
				@string = Encoding.Default.GetString(memoryStream.ToArray()); | 
						|
			} | 
						|
			return @string; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000402 RID: 1026 RVA: 0x00016E94 File Offset: 0x00015094 | 
						|
		public static void SerializerToFile<T>(T obj, string xmlFilePath) | 
						|
		{ | 
						|
			XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); | 
						|
			using (FileStream fileStream = File.Open(xmlFilePath, FileMode.Create, FileAccess.Write)) | 
						|
			{ | 
						|
				xmlSerializer.Serialize(fileStream, obj); | 
						|
			} | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000403 RID: 1027 RVA: 0x00016EF0 File Offset: 0x000150F0 | 
						|
		public static T DeSerializerFromXml<T>(string xml) | 
						|
		{ | 
						|
			XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); | 
						|
			T result; | 
						|
			using (MemoryStream memoryStream = new MemoryStream()) | 
						|
			{ | 
						|
				byte[] bytes = Encoding.UTF8.GetBytes(xml); | 
						|
				memoryStream.Write(bytes, 0, bytes.Length); | 
						|
				memoryStream.Position = 0L; | 
						|
				object obj = xmlSerializer.Deserialize(memoryStream); | 
						|
				result = (T)((object)obj); | 
						|
			} | 
						|
			return result; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000404 RID: 1028 RVA: 0x00016F70 File Offset: 0x00015170 | 
						|
		public static T DeSerializerFromFile<T>(string xmlFilePath) | 
						|
		{ | 
						|
			XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); | 
						|
			T result; | 
						|
			using (FileStream fileStream = File.OpenRead(xmlFilePath)) | 
						|
			{ | 
						|
				object obj = xmlSerializer.Deserialize(fileStream); | 
						|
				result = (T)((object)obj); | 
						|
			} | 
						|
			return result; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000405 RID: 1029 RVA: 0x00016FCC File Offset: 0x000151CC | 
						|
		public static string SerializerToJson(object item) | 
						|
		{ | 
						|
			JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings | 
						|
			{ | 
						|
				ContractResolver = new CamelCasePropertyNamesContractResolver() | 
						|
			}; | 
						|
			jsonSerializerSettings.Converters.Add(new StringEnumConverter()); | 
						|
			return JsonConvert.SerializeObject(item, jsonSerializerSettings); | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000406 RID: 1030 RVA: 0x0001700C File Offset: 0x0001520C | 
						|
		public static T DeSerializerFromJson<T>(string json) | 
						|
		{ | 
						|
			return (T)((object)JsonConvert.DeserializeObject(json, typeof(T))); | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000407 RID: 1031 RVA: 0x00017034 File Offset: 0x00015234 | 
						|
		public static string GetCreateSqlTypeFormShapeField(ShapeFieldInfo field) | 
						|
		{ | 
						|
			string result; | 
						|
			if (field.FieldName.ToLower() == "objectid") | 
						|
			{ | 
						|
				result = "integer"; | 
						|
			} | 
						|
			else | 
						|
			{ | 
						|
				eFieldType fieldType = field.FieldType; | 
						|
				switch (fieldType) | 
						|
				{ | 
						|
				case eFieldType.shpBoolean: | 
						|
					return "int16"; | 
						|
				case (eFieldType)2: | 
						|
				case (eFieldType)5: | 
						|
				case (eFieldType)9: | 
						|
				case (eFieldType)11: | 
						|
					goto IL_E4; | 
						|
				case eFieldType.shpInteger: | 
						|
				case eFieldType.shpSingle: | 
						|
					return "int32"; | 
						|
				case eFieldType.shpLong: | 
						|
					return "int64"; | 
						|
				case eFieldType.shpDouble: | 
						|
					break; | 
						|
				case eFieldType.shpDate: | 
						|
					return "realdate"; | 
						|
				case eFieldType.shpText: | 
						|
					return string.Format("text({0})", field.FieldSize); | 
						|
				case eFieldType.shpMemo: | 
						|
					return "text(100000000)"; | 
						|
				default: | 
						|
					switch (fieldType) | 
						|
					{ | 
						|
					case eFieldType.shpNumeric: | 
						|
						if (field.FieldDecimal == 0) | 
						|
						{ | 
						|
							return "int32"; | 
						|
						} | 
						|
						return "float64"; | 
						|
					case eFieldType.shpFloat: | 
						|
						break; | 
						|
					default: | 
						|
						goto IL_E4; | 
						|
					} | 
						|
					break; | 
						|
				} | 
						|
				return "float64"; | 
						|
				IL_E4: | 
						|
				result = "undifine"; | 
						|
			} | 
						|
			return result; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000408 RID: 1032 RVA: 0x00017130 File Offset: 0x00015330 | 
						|
		public static int GetFieldSDE_Type(ShapeFieldInfo field) | 
						|
		{ | 
						|
			eFieldType fieldType = field.FieldType; | 
						|
			switch (fieldType) | 
						|
			{ | 
						|
			case eFieldType.shpBoolean: | 
						|
				return 1; | 
						|
			case (eFieldType)2: | 
						|
			case (eFieldType)5: | 
						|
			case (eFieldType)9: | 
						|
			case (eFieldType)11: | 
						|
				goto IL_8B; | 
						|
			case eFieldType.shpInteger: | 
						|
				return 2; | 
						|
			case eFieldType.shpLong: | 
						|
				return 11; | 
						|
			case eFieldType.shpSingle: | 
						|
			case eFieldType.shpDouble: | 
						|
				break; | 
						|
			case eFieldType.shpDate: | 
						|
				return 7; | 
						|
			case eFieldType.shpText: | 
						|
				return 5; | 
						|
			case eFieldType.shpMemo: | 
						|
				return 13; | 
						|
			default: | 
						|
				switch (fieldType) | 
						|
				{ | 
						|
				case eFieldType.shpNumeric: | 
						|
					if (field.FieldDecimal == 0) | 
						|
					{ | 
						|
						return 2; | 
						|
					} | 
						|
					return 4; | 
						|
				case eFieldType.shpFloat: | 
						|
					break; | 
						|
				default: | 
						|
					goto IL_8B; | 
						|
				} | 
						|
				break; | 
						|
			} | 
						|
			return 4; | 
						|
			IL_8B: | 
						|
			return 5; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000409 RID: 1033 RVA: 0x000171D0 File Offset: 0x000153D0 | 
						|
		public static string GetShapeMultiPolygonString(ShapeFiles shapeFile) | 
						|
		{ | 
						|
			string result; | 
						|
			if (shapeFile.Vertices == null || shapeFile.Vertices.Count == 0) | 
						|
			{ | 
						|
				result = "MULTIPOLYGON EMPTY"; | 
						|
			} | 
						|
			else | 
						|
			{ | 
						|
				StringBuilder stringBuilder = new StringBuilder("MULTIPOLYGON (("); | 
						|
				foreach (object obj in shapeFile.Parts) | 
						|
				{ | 
						|
					Part part = (Part)obj; | 
						|
					stringBuilder.Append("("); | 
						|
					for (int i = part.Begins; i <= part.Ends; i++) | 
						|
					{ | 
						|
						stringBuilder.AppendFormat("{0} {1},", shapeFile.Vertices[i].X_Cord, shapeFile.Vertices[i].Y_Cord); | 
						|
					} | 
						|
					stringBuilder.Remove(stringBuilder.Length - 1, 1); | 
						|
					stringBuilder.Append("),"); | 
						|
				} | 
						|
				stringBuilder.Remove(stringBuilder.Length - 1, 1); | 
						|
				stringBuilder.Append("))"); | 
						|
				result = stringBuilder.ToString(); | 
						|
			} | 
						|
			return result; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x0600040A RID: 1034 RVA: 0x0001732C File Offset: 0x0001552C | 
						|
		public static esriFieldType ConvertFromShpFieldType(ShapeFieldInfo field) | 
						|
		{ | 
						|
			eFieldType fieldType = field.FieldType; | 
						|
			switch (fieldType) | 
						|
			{ | 
						|
			case eFieldType.shpBoolean: | 
						|
				return esriFieldType.esriFieldTypeSmallInteger; | 
						|
			case (eFieldType)2: | 
						|
			case (eFieldType)5: | 
						|
			case (eFieldType)9: | 
						|
			case (eFieldType)11: | 
						|
				goto IL_85; | 
						|
			case eFieldType.shpInteger: | 
						|
			case eFieldType.shpLong: | 
						|
				return esriFieldType.esriFieldTypeInteger; | 
						|
			case eFieldType.shpSingle: | 
						|
			case eFieldType.shpDouble: | 
						|
				break; | 
						|
			case eFieldType.shpDate: | 
						|
				return esriFieldType.esriFieldTypeDate; | 
						|
			case eFieldType.shpText: | 
						|
				return esriFieldType.esriFieldTypeString; | 
						|
			case eFieldType.shpMemo: | 
						|
				return esriFieldType.esriFieldTypeString; | 
						|
			default: | 
						|
				switch (fieldType) | 
						|
				{ | 
						|
				case eFieldType.shpNumeric: | 
						|
					if (field.FieldDecimal == 0) | 
						|
					{ | 
						|
						return esriFieldType.esriFieldTypeInteger; | 
						|
					} | 
						|
					return esriFieldType.esriFieldTypeDouble; | 
						|
				case eFieldType.shpFloat: | 
						|
					break; | 
						|
				default: | 
						|
					goto IL_85; | 
						|
				} | 
						|
				break; | 
						|
			} | 
						|
			return esriFieldType.esriFieldTypeDouble; | 
						|
			IL_85: | 
						|
			return esriFieldType.esriFieldTypeString; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x0600040B RID: 1035 RVA: 0x000173C4 File Offset: 0x000155C4 | 
						|
		public static object GetShpFieldTypeDefaultValue(ShapeFiles.eFieldType type) | 
						|
		{ | 
						|
			//switch (type) | 
						|
			//{ | 
						|
			//case 1: | 
						|
			//case 3: | 
						|
			//case 4: | 
						|
			//	return 0; | 
						|
			//case 2: | 
						|
			//case 5: | 
						|
			//case 9: | 
						|
			//case 11: | 
						|
			//	goto IL_78; | 
						|
			//case 6: | 
						|
			//case 7: | 
						|
			//	break; | 
						|
			//case 8: | 
						|
			//	return "null"; | 
						|
			//case 10: | 
						|
			//case 12: | 
						|
			//	return ""; | 
						|
			//default: | 
						|
			//	switch (type) | 
						|
			//	{ | 
						|
			//	case 19: | 
						|
			//	case 20: | 
						|
			//		break; | 
						|
			//	default: | 
						|
			//		goto IL_78; | 
						|
			//	} | 
						|
			//	break; | 
						|
			//} | 
						|
			//return 0.0; | 
						|
			//IL_78: | 
						|
			return ""; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x0600040C RID: 1036 RVA: 0x00017454 File Offset: 0x00015654 | 
						|
		public static long UNIX_TIMESTAMP(DateTime dateTime) | 
						|
		{ | 
						|
			return (dateTime.Ticks - DateTime.Parse("1970-01-01 00:00:00").Ticks) / 10000000L; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x0600040D RID: 1037 RVA: 0x00017488 File Offset: 0x00015688 | 
						|
		public static Image GetImageFromBase64(string base64) | 
						|
		{ | 
						|
			Image result; | 
						|
			if (string.IsNullOrEmpty(base64)) | 
						|
			{ | 
						|
				result = null; | 
						|
			} | 
						|
			else | 
						|
			{ | 
						|
				byte[] buffer = Convert.FromBase64String(base64); | 
						|
				result = Image.FromStream(new MemoryStream(buffer) | 
						|
				{ | 
						|
					Position = 0L | 
						|
				}); | 
						|
			} | 
						|
			return result; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x0600040E RID: 1038 RVA: 0x000174C8 File Offset: 0x000156C8 | 
						|
		public static string GetBase64FromImage(Image img) | 
						|
		{ | 
						|
			string result; | 
						|
			if (img == null) | 
						|
			{ | 
						|
				result = ""; | 
						|
			} | 
						|
			else | 
						|
			{ | 
						|
				using (MemoryStream memoryStream = new MemoryStream()) | 
						|
				{ | 
						|
					if (img.RawFormat.Guid == ImageFormat.MemoryBmp.Guid) | 
						|
					{ | 
						|
						img.Save(memoryStream, ImageFormat.Bmp); | 
						|
					} | 
						|
					else | 
						|
					{ | 
						|
						img.Save(memoryStream, img.RawFormat); | 
						|
					} | 
						|
					memoryStream.Position = 0L; | 
						|
					result = Convert.ToBase64String(memoryStream.ToArray()); | 
						|
				} | 
						|
			} | 
						|
			return result; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x0600040F RID: 1039 RVA: 0x0001756C File Offset: 0x0001576C | 
						|
		public static string GetBMPBase64FromImage(Image img) | 
						|
		{ | 
						|
			string result; | 
						|
			if (img == null) | 
						|
			{ | 
						|
				result = ""; | 
						|
			} | 
						|
			else | 
						|
			{ | 
						|
				Bitmap bitmap = new Bitmap(img.Width, img.Height, PixelFormat.Format8bppIndexed); | 
						|
				using (Graphics graphics = Graphics.FromImage(bitmap)) | 
						|
				{ | 
						|
					graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; | 
						|
					graphics.SmoothingMode = SmoothingMode.HighQuality; | 
						|
					graphics.CompositingQuality = CompositingQuality.HighQuality; | 
						|
					graphics.DrawImage(img, 0, 0); | 
						|
				} | 
						|
				using (MemoryStream memoryStream = new MemoryStream()) | 
						|
				{ | 
						|
					bitmap.Save(memoryStream, ImageFormat.Bmp); | 
						|
					memoryStream.Position = 0L; | 
						|
					result = Convert.ToBase64String(memoryStream.ToArray()); | 
						|
				} | 
						|
			} | 
						|
			return result; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000410 RID: 1040 RVA: 0x00017644 File Offset: 0x00015844 | 
						|
		public static Color GetColorFromInt4Color(int[] array) | 
						|
		{ | 
						|
			Color result; | 
						|
			if (array == null || array.Length != 4) | 
						|
			{ | 
						|
				result = Color.Black; | 
						|
			} | 
						|
			else | 
						|
			{ | 
						|
				result = Color.FromArgb(array[3], array[0], array[1], array[2]); | 
						|
			} | 
						|
			return result; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000411 RID: 1041 RVA: 0x00017680 File Offset: 0x00015880 | 
						|
		public static int[] GetInt4ColorFromColor(Color color) | 
						|
		{ | 
						|
			int[] array = new int[4]; | 
						|
			bool flag = 1 == 0; | 
						|
			array[0] = (int)color.R; | 
						|
			array[1] = (int)color.G; | 
						|
			array[2] = (int)color.B; | 
						|
			array[3] = (int)color.A; | 
						|
			return array; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000412 RID: 1042 RVA: 0x000176CC File Offset: 0x000158CC | 
						|
		public static Bitmap ConvertTo1Bpp1(Bitmap bmp) | 
						|
		{ | 
						|
			int num = 0; | 
						|
			for (int i = 0; i < bmp.Width; i++) | 
						|
			{ | 
						|
				for (int j = 0; j < bmp.Height; j++) | 
						|
				{ | 
						|
					num += (int)bmp.GetPixel(i, j).B; | 
						|
				} | 
						|
			} | 
						|
			num /= bmp.Width * bmp.Height; | 
						|
			for (int i = 0; i < bmp.Width; i++) | 
						|
			{ | 
						|
				for (int j = 0; j < bmp.Height; j++) | 
						|
				{ | 
						|
					int num2 = (int)(byte.MaxValue - bmp.GetPixel(i, j).B); | 
						|
					Color color = (num2 > num) ? Color.FromArgb(0, 0, 0) : Color.FromArgb(255, 255, 255); | 
						|
					bmp.SetPixel(i, j, color); | 
						|
				} | 
						|
			} | 
						|
			return bmp; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000413 RID: 1043 RVA: 0x000177B4 File Offset: 0x000159B4 | 
						|
		public static Bitmap ConvertTo1Bpp2(Bitmap img) | 
						|
		{ | 
						|
			int width = img.Width; | 
						|
			int height = img.Height; | 
						|
			Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format1bppIndexed); | 
						|
			BitmapData bitmapData = bitmap.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format1bppIndexed); | 
						|
			for (int i = 0; i < height; i++) | 
						|
			{ | 
						|
				byte[] array = new byte[(width + 7) / 8]; | 
						|
				for (int j = 0; j < width; j++) | 
						|
				{ | 
						|
					if ((double)img.GetPixel(j, i).GetBrightness() >= 0.5) | 
						|
					{ | 
						|
						byte[] array2 = array; | 
						|
						int num = j / 8; | 
						|
						array2[num] |= (byte)(128 >> j % 8); | 
						|
					} | 
						|
				} | 
						|
				Marshal.Copy(array, 0, (IntPtr)((int)bitmapData.Scan0 + bitmapData.Stride * i), array.Length); | 
						|
			} | 
						|
			return bitmap; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000414 RID: 1044 RVA: 0x000178B0 File Offset: 0x00015AB0 | 
						|
		public static string Get1BppBase64FromImage(Image img) | 
						|
		{ | 
						|
			Bitmap img2 = CommonMethod.ConvertTo1Bpp2(img as Bitmap); | 
						|
			return CommonMethod.GetBase64FromImage(img2); | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000415 RID: 1045 RVA: 0x000178D4 File Offset: 0x00015AD4 | 
						|
		public static string ConvertBase64To1BppBase64(string base64) | 
						|
		{ | 
						|
			Image imageFromBase = CommonMethod.GetImageFromBase64(base64); | 
						|
			return CommonMethod.Get1BppBase64FromImage(imageFromBase); | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000416 RID: 1046 RVA: 0x000178F4 File Offset: 0x00015AF4 | 
						|
		public static Renderer GetAdvDrawingInfoRender(Renderer itemInfoRender) | 
						|
		{ | 
						|
			Renderer result; | 
						|
			if (itemInfoRender is SimpleRenderer) | 
						|
			{ | 
						|
				SimpleRenderer simpleRenderer = itemInfoRender as SimpleRenderer; | 
						|
				result = new SimpleRenderer | 
						|
				{ | 
						|
					Description = simpleRenderer.Description, | 
						|
					Label = simpleRenderer.Label, | 
						|
					Symbol = CommonMethod.GetCIMSymbolReference(simpleRenderer.Symbol as FSymbol) | 
						|
				}; | 
						|
			} | 
						|
			else if (itemInfoRender is UniqueValueRenderer) | 
						|
			{ | 
						|
				UniqueValueRenderer uniqueValueRenderer = itemInfoRender as UniqueValueRenderer; | 
						|
				UniqueValueRenderer uniqueValueRenderer2 = new UniqueValueRenderer | 
						|
				{ | 
						|
					Field1 = uniqueValueRenderer.Field1, | 
						|
					Field2 = uniqueValueRenderer.Field2, | 
						|
					Field3 = uniqueValueRenderer.Field3, | 
						|
					DefaultLabel = uniqueValueRenderer.DefaultLabel, | 
						|
					FieldDelimiter = uniqueValueRenderer.FieldDelimiter | 
						|
				}; | 
						|
				CIMSymbolReference cimsymbolReference = CommonMethod.GetCIMSymbolReference(uniqueValueRenderer.DefaultSymbol as FSymbol); | 
						|
				uniqueValueRenderer2.DefaultSymbol = cimsymbolReference; | 
						|
				for (int i = 0; i < uniqueValueRenderer.UniqueValueInfos.Count; i++) | 
						|
				{ | 
						|
					UniqueValueInfo uniqueValueInfo = uniqueValueRenderer.UniqueValueInfos[i]; | 
						|
					UniqueValueInfo uniqueValueInfo2 = new UniqueValueInfo | 
						|
					{ | 
						|
						Label = uniqueValueInfo.Label, | 
						|
						Description = uniqueValueInfo.Description, | 
						|
						Value = uniqueValueInfo.Value | 
						|
					}; | 
						|
					CIMSymbolReference cimsymbolReference2 = CommonMethod.GetCIMSymbolReference(uniqueValueInfo.Symbol as FSymbol); | 
						|
					cimsymbolReference2.SymbolName = "Symbol_" + (i + 2).ToString(); | 
						|
					uniqueValueInfo2.Symbol = cimsymbolReference2; | 
						|
					uniqueValueRenderer2.UniqueValueInfos.Add(uniqueValueInfo2); | 
						|
				} | 
						|
				result = uniqueValueRenderer2; | 
						|
			} | 
						|
			else | 
						|
			{ | 
						|
				result = null; | 
						|
			} | 
						|
			return result; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000417 RID: 1047 RVA: 0x00017AE0 File Offset: 0x00015CE0 | 
						|
		private static CIMSymbolReference GetCIMSymbolReference(FSymbol fSymbol) | 
						|
		{ | 
						|
			CIMSymbolReference cimsymbolReference = new CIMSymbolReference(); | 
						|
			cimsymbolReference.SymbolName = "Symbol_1"; | 
						|
			CIMPolygonSymbol cimpolygonSymbol = new CIMPolygonSymbol(); | 
						|
			cimpolygonSymbol.SymbolLayers = new List<SymbolLayer>(); | 
						|
			CIMFilledStroke cimfilledStroke = new CIMFilledStroke(); | 
						|
			cimfilledStroke.Pattern = new CIMSolidPattern | 
						|
			{ | 
						|
				Color = fSymbol.Outline.Color | 
						|
			}; | 
						|
			cimfilledStroke.Width = fSymbol.Outline.Width; | 
						|
			cimpolygonSymbol.SymbolLayers.Add(cimfilledStroke); | 
						|
			if (fSymbol is PFSymbol) | 
						|
			{ | 
						|
				PFSymbol pfsymbol = fSymbol as PFSymbol; | 
						|
				CIMFill cimfill = new CIMFill(); | 
						|
				CIMTiledPattern cimtiledPattern = new CIMTiledPattern | 
						|
				{ | 
						|
					Height = pfsymbol.Height, | 
						|
					Url = "data:image/bmp;base64," + CommonMethod.ConvertBase64To1BppBase64(pfsymbol.ImageData) | 
						|
				}; | 
						|
				cimtiledPattern.ColorSubstitutions.Add(new CIMColorSubstitution | 
						|
				{ | 
						|
					NewColor = fSymbol.Outline.Color, | 
						|
					OldColor = new int[] | 
						|
					{ | 
						|
						0, | 
						|
						0, | 
						|
						0, | 
						|
						255 | 
						|
					} | 
						|
				}); | 
						|
				cimtiledPattern.ColorSubstitutions.Add(new CIMColorSubstitution | 
						|
				{ | 
						|
					NewColor = new int[] | 
						|
					{ | 
						|
						255, | 
						|
						255, | 
						|
						255, | 
						|
						255 | 
						|
					}, | 
						|
					OldColor = new int[] | 
						|
					{ | 
						|
						255, | 
						|
						255, | 
						|
						255, | 
						|
						255 | 
						|
					} | 
						|
				}); | 
						|
				cimfill.Pattern = cimtiledPattern; | 
						|
				cimpolygonSymbol.SymbolLayers.Add(cimfill); | 
						|
			} | 
						|
			CIMFill cimfill2 = new CIMFill(); | 
						|
			if (fSymbol is SFSymbol) | 
						|
			{ | 
						|
				SFSymbol sfsymbol = fSymbol as SFSymbol; | 
						|
				cimfill2.Pattern = new CIMSolidPattern | 
						|
				{ | 
						|
					Color = sfsymbol.Color | 
						|
				}; | 
						|
			} | 
						|
			else | 
						|
			{ | 
						|
				cimfill2.Pattern = new CIMSolidPattern | 
						|
				{ | 
						|
					Color = new int[] | 
						|
					{ | 
						|
						255, | 
						|
						255, | 
						|
						255, | 
						|
						255 | 
						|
					} | 
						|
				}; | 
						|
			} | 
						|
			cimpolygonSymbol.SymbolLayers.Add(cimfill2); | 
						|
			cimsymbolReference.Symbol = cimpolygonSymbol; | 
						|
			return cimsymbolReference; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000418 RID: 1048 RVA: 0x00017CEC File Offset: 0x00015EEC | 
						|
		public static float[] rgb2hsb(int rgbR, int rgbG, int rgbB) | 
						|
		{ | 
						|
			int[] array = new int[] | 
						|
			{ | 
						|
				rgbR, | 
						|
				rgbG, | 
						|
				rgbB | 
						|
			}; | 
						|
			Array.Sort<int>(array); | 
						|
			int num = array[2]; | 
						|
			int num2 = array[0]; | 
						|
			float num3 = (float)num / 255f; | 
						|
			float num4 = (num == 0) ? 0f : ((float)(num - num2) / (float)num); | 
						|
			float num5 = 0f; | 
						|
			if (num == rgbR && rgbG >= rgbB) | 
						|
			{ | 
						|
				num5 = (float)(rgbG - rgbB) * 60f / (float)(num - num2) + 0f; | 
						|
			} | 
						|
			else if (num == rgbR && rgbG < rgbB) | 
						|
			{ | 
						|
				num5 = (float)(rgbG - rgbB) * 60f / (float)(num - num2) + 360f; | 
						|
			} | 
						|
			else if (num == rgbG) | 
						|
			{ | 
						|
				num5 = (float)(rgbB - rgbR) * 60f / (float)(num - num2) + 120f; | 
						|
			} | 
						|
			else if (num == rgbB) | 
						|
			{ | 
						|
				num5 = (float)(rgbR - rgbG) * 60f / (float)(num - num2) + 240f; | 
						|
			} | 
						|
			if (float.IsNaN(num5)) | 
						|
			{ | 
						|
				num5 = 0f; | 
						|
			} | 
						|
			return new float[] | 
						|
			{ | 
						|
				num5, | 
						|
				num4, | 
						|
				num3 | 
						|
			}; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x06000419 RID: 1049 RVA: 0x00017E28 File Offset: 0x00016028 | 
						|
		public static float[] rgb2hsb(Color color) | 
						|
		{ | 
						|
			return CommonMethod.rgb2hsb((int)color.R, (int)color.G, (int)color.B); | 
						|
		} | 
						|
 | 
						|
		// Token: 0x0600041A RID: 1050 RVA: 0x00017E54 File Offset: 0x00016054 | 
						|
		public static Color hsb2rgb(float h, float s, float v) | 
						|
		{ | 
						|
			float num = 0f; | 
						|
			float num2 = 0f; | 
						|
			float num3 = 0f; | 
						|
			int num4 = (int)(h / 60f % 6f); | 
						|
			float num5 = h / 60f - (float)num4; | 
						|
			float num6 = v * (1f - s); | 
						|
			float num7 = v * (1f - num5 * s); | 
						|
			float num8 = v * (1f - (1f - num5) * s); | 
						|
			switch (num4) | 
						|
			{ | 
						|
			case 0: | 
						|
				num = v; | 
						|
				num2 = num8; | 
						|
				num3 = num6; | 
						|
				break; | 
						|
			case 1: | 
						|
				num = num7; | 
						|
				num2 = v; | 
						|
				num3 = num6; | 
						|
				break; | 
						|
			case 2: | 
						|
				num = num6; | 
						|
				num2 = v; | 
						|
				num3 = num8; | 
						|
				break; | 
						|
			case 3: | 
						|
				num = num6; | 
						|
				num2 = num7; | 
						|
				num3 = v; | 
						|
				break; | 
						|
			case 4: | 
						|
				num = num8; | 
						|
				num2 = num6; | 
						|
				num3 = v; | 
						|
				break; | 
						|
			case 5: | 
						|
				num = v; | 
						|
				num2 = num6; | 
						|
				num3 = num7; | 
						|
				break; | 
						|
			} | 
						|
			return Color.FromArgb((int)((double)num * 255.0), (int)((double)num2 * 255.0), (int)((double)num3 * 255.0)); | 
						|
		} | 
						|
 | 
						|
		// Token: 0x0600041B RID: 1051 RVA: 0x00017F50 File Offset: 0x00016150 | 
						|
		public static void BuildItemInfoTypes(ItemInfo itemInfo) | 
						|
		{ | 
						|
			if (itemInfo.DrawingInfo.Renderer is UniqueValueRenderer) | 
						|
			{ | 
						|
				UniqueValueRenderer uniqueValueRenderer = itemInfo.DrawingInfo.Renderer as UniqueValueRenderer; | 
						|
				foreach (UniqueValueInfo uniqueValueInfo in uniqueValueRenderer.UniqueValueInfos) | 
						|
				{ | 
						|
					UniqueType uniqueType = new UniqueType | 
						|
					{ | 
						|
						Id = uniqueValueInfo.Value, | 
						|
						Name = uniqueValueInfo.Value | 
						|
					}; | 
						|
					Template template = CommonMethod.GetTemplate(itemInfo); | 
						|
					if (uniqueValueRenderer.DefaultSymbol is MSymbol) | 
						|
					{ | 
						|
						template.DrawingTool = "esriFeatureEditToolPoint"; | 
						|
					} | 
						|
					else if (uniqueValueRenderer.DefaultSymbol is FSymbol) | 
						|
					{ | 
						|
						template.DrawingTool = "esriFeatureEditToolPolygon"; | 
						|
					} | 
						|
					else if (uniqueValueRenderer.DefaultSymbol is LSymbol) | 
						|
					{ | 
						|
						template.DrawingTool = "esriFeatureEditToolLine"; | 
						|
					} | 
						|
					template.Name = uniqueValueInfo.Value; | 
						|
					template.SetAttributeValue(itemInfo.TypeIdField, uniqueValueInfo.Value); | 
						|
					uniqueType.Templates.Add(template); | 
						|
					itemInfo.Types.Add(uniqueType); | 
						|
				} | 
						|
				itemInfo.Templates.Clear(); | 
						|
			} | 
						|
			else if (itemInfo.DrawingInfo.Renderer is SimpleRenderer) | 
						|
			{ | 
						|
				Template template = CommonMethod.GetTemplate(itemInfo); | 
						|
				Symbol symbol = (itemInfo.DrawingInfo.Renderer as SimpleRenderer).Symbol; | 
						|
				if (symbol is MSymbol) | 
						|
				{ | 
						|
					template.DrawingTool = "esriFeatureEditToolPoint"; | 
						|
				} | 
						|
				else if (symbol is FSymbol) | 
						|
				{ | 
						|
					template.DrawingTool = "esriFeatureEditToolPolygon"; | 
						|
				} | 
						|
				else if (symbol is LSymbol) | 
						|
				{ | 
						|
					template.DrawingTool = "esriFeatureEditToolLine"; | 
						|
				} | 
						|
				template.Name = itemInfo.Name; | 
						|
				itemInfo.Templates.Clear(); | 
						|
				itemInfo.Templates.Add(template); | 
						|
				itemInfo.Types.Clear(); | 
						|
			} | 
						|
		} | 
						|
 | 
						|
		// Token: 0x0600041C RID: 1052 RVA: 0x000181A0 File Offset: 0x000163A0 | 
						|
		private static Template GetTemplate(ItemInfo itemInfo) | 
						|
		{ | 
						|
			Template template = new Template(); | 
						|
			foreach (Field field in itemInfo.Fields) | 
						|
			{ | 
						|
				template.Prototype.Attributes.Add(field.Name, CommonMethod.GetFieldDefaultValue(field.Type)); | 
						|
			} | 
						|
			return template; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x0600041D RID: 1053 RVA: 0x00018224 File Offset: 0x00016424 | 
						|
		private static object GetFieldDefaultValue(esriFieldType fieldType) | 
						|
		{ | 
						|
			object result = null; | 
						|
			switch (fieldType) | 
						|
			{ | 
						|
			case esriFieldType.esriFieldTypeSmallInteger: | 
						|
			case esriFieldType.esriFieldTypeInteger: | 
						|
			case esriFieldType.esriFieldTypeSingle: | 
						|
			case esriFieldType.esriFieldTypeDouble: | 
						|
			case esriFieldType.esriFieldTypeOID: | 
						|
				result = 0; | 
						|
				break; | 
						|
			case esriFieldType.esriFieldTypeString: | 
						|
			case esriFieldType.esriFieldTypeGUID: | 
						|
			case esriFieldType.esriFieldTypeGlobalID: | 
						|
			case esriFieldType.esriFieldTypeXML: | 
						|
				result = " "; | 
						|
				break; | 
						|
			case esriFieldType.esriFieldTypeDate: | 
						|
			case esriFieldType.esriFieldTypeGeometry: | 
						|
			case esriFieldType.esriFieldTypeBlob: | 
						|
			case esriFieldType.esriFieldTypeRaster: | 
						|
				result = null; | 
						|
				break; | 
						|
			} | 
						|
			return result; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x0600041E RID: 1054 RVA: 0x00018290 File Offset: 0x00016490 | 
						|
		public static Image GetImageFrom(FSymbol fSymbol, int height, int width) | 
						|
		{ | 
						|
			float num = (float)((height > width) ? width : height) / 2f - 1f; | 
						|
			float num2 = (float)fSymbol.Outline.Width; | 
						|
			Bitmap bitmap = new Bitmap(width, height); | 
						|
			Graphics graphics = Graphics.FromImage(bitmap); | 
						|
			SolidBrush brush = new SolidBrush(CommonMethod.GetColorFromInt4Color(fSymbol.Outline.Color)); | 
						|
			graphics.FillRectangle(brush, 0, 0, width, height); | 
						|
			if (num2 > num) | 
						|
			{ | 
						|
				num2 = num; | 
						|
			} | 
						|
			Brush brush2 = null; | 
						|
			if (fSymbol is SFSymbol) | 
						|
			{ | 
						|
				SFSymbol sfsymbol = fSymbol as SFSymbol; | 
						|
				brush2 = new SolidBrush(CommonMethod.GetColorFromInt4Color(sfsymbol.Color)); | 
						|
			} | 
						|
			else if (fSymbol is PFSymbol) | 
						|
			{ | 
						|
				PFSymbol pfsymbol = fSymbol as PFSymbol; | 
						|
				brush2 = new TextureBrush(CommonMethod.GetImageFromBase64(pfsymbol.ImageData)); | 
						|
			} | 
						|
			Image result; | 
						|
			if (brush2 == null) | 
						|
			{ | 
						|
				result = null; | 
						|
			} | 
						|
			else | 
						|
			{ | 
						|
				graphics.FillRectangle(brush2, num2, num2, (float)width - num2 * 2f, (float)height - num2 * 2f); | 
						|
				graphics.Save(); | 
						|
				graphics.Dispose(); | 
						|
				result = bitmap; | 
						|
			} | 
						|
			return result; | 
						|
		} | 
						|
 | 
						|
		// Token: 0x0600041F RID: 1055 RVA: 0x000183B0 File Offset: 0x000165B0 | 
						|
		public static LabelingInfo GetLabelInfo(Font font, Color fontColor, string fieldName, int minScale, int maxScale) | 
						|
		{ | 
						|
			LabelingInfo labelingInfo = new LabelingInfo(); | 
						|
			labelingInfo.LabelExpression = string.Format("[{0}]", fieldName); | 
						|
			labelingInfo.MaxScale = maxScale; | 
						|
			labelingInfo.MinScale = minScale; | 
						|
			labelingInfo.Symbol = new TSSymbol(); | 
						|
			labelingInfo.Symbol.Color = new int[] | 
						|
			{ | 
						|
				(int)fontColor.R, | 
						|
				(int)fontColor.G, | 
						|
				(int)fontColor.B, | 
						|
				(int)fontColor.A | 
						|
			}; | 
						|
			labelingInfo.Symbol.Font = new ESRIFont | 
						|
			{ | 
						|
				Family = font.FontFamily.GetName(CultureInfo.GetCultureInfo("en-us").LCID), | 
						|
				Size = (int)font.Size | 
						|
			}; | 
						|
			if (font.Bold) | 
						|
			{ | 
						|
				labelingInfo.Symbol.Font.Weight = "bold"; | 
						|
			} | 
						|
			if (font.Underline) | 
						|
			{ | 
						|
				labelingInfo.Symbol.Font.Decoration = "underline"; | 
						|
			} | 
						|
			return labelingInfo; | 
						|
		} | 
						|
	} | 
						|
}
 | 
						|
 |