/// <summary> /// 添加预处理器 /// </summary> /// <param name="handler">预处理器实例。</param> /// <returns>返回false表示已经存在。</returns> public bool AddPreHandler(IPreHandler handler) { if (_preHandlers.Contains(handler)) { return(false); } _preHandlers.Add(handler); return(true); }
/// <summary> /// 预处理器下移 /// </summary> /// <param name="handler">处理器</param> public void PreHandlerMoveNext(IPreHandler handler) { int index = _preHandlers.IndexOf(handler); if (index == -1 || index == _preHandlers.Count - 1) { return; } index++; _preHandlers.Remove(handler); _preHandlers.Insert(index, handler); }
/// <summary> /// 预处理器上移 /// </summary> /// <param name="handler">处理器</param> public void PreHandlerMovePrev(IPreHandler handler) { int index = _preHandlers.IndexOf(handler); if (index == -1 || index == 0) { return; } index--; _preHandlers.Remove(handler); _preHandlers.Insert(index, handler); }
static void LoadValues(Symbol.IO.Packing.TreePackage data, CharLibrary result) { result._data = data; result._name = data["name"] as string; result._version = data["version"] as string; result._description = data["description"] as string; result._width = TypeExtensions.Convert <int>(data["width"], 0); result._height = TypeExtensions.Convert <int>(data["height"], 0); result._charWidth = TypeExtensions.Convert <int>(data["charWidth"], 0); result._charHeight = TypeExtensions.Convert <int>(data["charHeight"], 0); result._charMaxWidth = TypeExtensions.Convert <int>(data["charMaxWidth"], 0); result._minPoints = TypeExtensions.Convert <int>(data["minPoints"], 0); result._needCenterMiddle = TypeExtensions.Convert <bool>(data["needCenterMiddle"], false); result._emptyColorR = TypeExtensions.Convert <byte>(data["emptyColorR"], 0); result._zool = TypeExtensions.Convert <float>(data["zool"], 1.0F); if (result._zool <= 0F) { result._zool = 1.0F; } result._pageUrl = data["pageUrl"] as string; result._codeUrl = data["codeUrl"] as string; result._extension = data["extension"] as string; int preCount = TypeExtensions.Convert <int>(data["preHandlers"], 0); result._preHandlers.Clear(); if (preCount > 0) { for (int i = 0; i < preCount; i++) { string keyBefore = "pre_" + i + "_"; string key = LinqHelper.FirstOrDefault(data.Keys, p => p.StartsWith(keyBefore)); if (string.IsNullOrEmpty(key)) { continue; } IPreHandler handler = PreHandlerHelper.CreateInstance(key.Substring(keyBefore.Length)); if (handler == null) { continue; } handler.Load((Symbol.IO.Packing.TreePackage)data[key]); result._preHandlers.Add(handler); } } //int takeCount = TypeExtensions.Convert<int>(data["takeHandlers"], 0); //result._takeHandlers.Clear(); //if (takeCount > 0) { // for (int i = 0; i < takeCount; i++) { // string keyBefore = "take_" + i + "_"; // string key = LinqHelper.FirstOrDefault(data.Keys, p => p.StartsWith(keyBefore)); // if (string.IsNullOrEmpty(key)) // continue; // ITakeHandler handler = TakeHandlerHelper.CreateInstance(key.Substring(keyBefore.Length)); // if (handler == null) // continue; // handler.Load((Symbol.IO.Packing.TreePackage)data[key]); // result._takeHandlers.Add(handler); // } //} //if (result._takeHandlers.Count == 0) { // result._takeHandlers.Add(TakeHandlerHelper.CreateInstance("YDotMatrix")); //} int charCount = TypeExtensions.Convert <int>(data["chars"], 0); result._chars.Clear(); if (charCount > 0) { for (int i = 0; i < charCount; i++) { string keyBefore = "char_" + i + "_"; string key = LinqHelper.FirstOrDefault(data.Keys, p => p.StartsWith(keyBefore)); if (string.IsNullOrEmpty(key) || key.Length == keyBefore.Length) { continue; } Symbol.IO.Packing.TreePackage charData = (Symbol.IO.Packing.TreePackage)data[key]; if (charData == null) { continue; } CharInfo charInfo = new CharInfo() { Value = key.Substring(keyBefore.Length)[0] }; int pointCount = TypeExtensions.Convert <int>(charData["count"], 0); if (pointCount > 0) { for (int j = 0; j < pointCount; j++) { string keyBefore2 = j + "_"; CharPoint charPoint = new CharPoint() { OriginalX = TypeExtensions.Convert <int>(charData[keyBefore2 + "OriginalX"], 0), OriginalY = TypeExtensions.Convert <int>(charData[keyBefore2 + "OriginalY"], 0), X = TypeExtensions.Convert <int>(charData[keyBefore2 + "X"], 0), Y = TypeExtensions.Convert <int>(charData[keyBefore2 + "Y"], 0), R = TypeExtensions.Convert <byte>(charData[keyBefore2 + "R"], 0), G = TypeExtensions.Convert <byte>(charData[keyBefore2 + "G"], 0), B = TypeExtensions.Convert <byte>(charData[keyBefore2 + "B"], 0), }; charInfo.Points.Add(charPoint); } } result._chars.Add(charInfo); } } string takeHandlerKeyBefore = "takeHandler_"; string takeHandlerKey = LinqHelper.FirstOrDefault(data.Keys, p => p.StartsWith(takeHandlerKeyBefore)); if (!string.IsNullOrEmpty(takeHandlerKey) && takeHandlerKey.Length != takeHandlerKeyBefore.Length) { result._takeHandler = TakeHandlerHelper.CreateInstance(takeHandlerKey.Substring(takeHandlerKeyBefore.Length)); if (result._takeHandler != null) { Symbol.IO.Packing.TreePackage takeHandlerData = (Symbol.IO.Packing.TreePackage)data[takeHandlerKey]; result._takeHandler.Load(takeHandlerData); } } if (result._takeHandler == null) { result._takeHandler = TakeHandlerHelper.CreateInstance("YDotMatrix"); } string charRecognizerKeyBefore = "charRecognizer_"; string charRecognizerKey = LinqHelper.FirstOrDefault(data.Keys, p => p.StartsWith(charRecognizerKeyBefore)); if (!string.IsNullOrEmpty(charRecognizerKey) && charRecognizerKey.Length != charRecognizerKeyBefore.Length) { result._charRecognizer = CharRecognizerHelper.CreateInstance(charRecognizerKey.Substring(charRecognizerKeyBefore.Length)); if (result._charRecognizer != null) { Symbol.IO.Packing.TreePackage charRecognizerData = (Symbol.IO.Packing.TreePackage)data[charRecognizerKey]; result._charRecognizer.Load(charRecognizerData); } } if (result._charRecognizer == null) { result._charRecognizer = CharRecognizerHelper.CreateInstance("Weight3x3"); } }
/// <summary> /// 移除预处理器 /// </summary> /// <param name="handler">预处理器实例。</param> /// <returns>返回false表示不存在。</returns> public bool RemovePreHandler(IPreHandler handler) { return(_preHandlers.Remove(handler)); }
public void AddHandler(IPreHandler <TRequest, TResponse> handler) { ListPreHandlers.Add(handler); }