public UserDB GetSenderOfOldestMessage() { List<MessageInfo> messageInfoList = new List<MessageInfo> (); messageInfoList = this.Messages.Values.Where (s => s.Message.FromAccountID != AndroidData.CurrentUser.AccountID).ToList (); if (messageInfoList.Count > 0) return messageInfoList.MinItem<MessageInfo, DateTime> (s => s.Message.MessageSent).MessageUser; else return null; }
public RectangleF GetBoundingBox() { List<PointF> allPoints = new List<PointF> (); foreach (DrawingInfo eachDrawingInfo in this.DrawingItems.Values) { if (eachDrawingInfo.DrawingType == DrawingLayerType.Drawing) { allPoints.AddRange (eachDrawingInfo.PathPoints); } else if (eachDrawingInfo.DrawingType == DrawingLayerType.Image || eachDrawingInfo.DrawingType == DrawingLayerType.Comix || eachDrawingInfo.DrawingType == DrawingLayerType.Stamp || eachDrawingInfo.DrawingType == DrawingLayerType.Callout) { RectangleF imgFrame = eachDrawingInfo.RotationAngle == 0 ? eachDrawingInfo.ImageFrame : eachDrawingInfo.RotatedImageBox; allPoints.Add (imgFrame.Location); allPoints.Add (new PointF (imgFrame.Right, imgFrame.Y)); allPoints.Add (new PointF (imgFrame.Right, imgFrame.Bottom)); allPoints.Add (new PointF (imgFrame.X, imgFrame.Bottom)); }//end if else }//end foreach if (allPoints.Count == 0) { return RectangleF.Empty; } else { PointF minXPoint = allPoints .MinItem<PointF, float> (s => s.X); PointF maxXPoint = allPoints .MaxItem<PointF, float> (s => s.X); PointF minYPoint = allPoints .MinItem<PointF, float> (s => s.Y); PointF maxYPoint = allPoints .MaxItem<PointF, float> (s => s.Y); return new RectangleF (minXPoint.X, minYPoint.Y, maxXPoint.X - minXPoint.X, maxYPoint.Y - minYPoint.Y); }//end if else }
/// <summary> /// Explores the with hunspell. /// </summary> /// <param name="item">The item.</param> /// <param name="log">The log.</param> /// <returns></returns> public static termExploreModel exploreWithHunspell(this termExploreItem item, ILogBuilder log) { termExploreModel output = new termExploreModel(); List <string> terms = new List <string>(); terms.Add(item.inputForm); List <string> suggest = imbLanguageFrameworkManager.serbian.basic.hunspellEngine.Suggest(item.inputForm); List <string> sug2 = new List <string>(); suggest.ForEach(x => sug2.Add(x.Replace("\\-", "-"))); suggest = sug2; if (Enumerable.Any(suggest)) { int min_l = Enumerable.Min(suggest, x => x.Length); List <string> possibleTerm = new List <string>(); int tocut = min_l - item.inputForm.Length; string start = item.inputForm; if (tocut != 0) { start = start.substring(tocut); } string rootComposite = ""; int rootCompositeSplit = 0; foreach (string sug in suggest) { if (!sug.Contains(" ")) { if (sug.Contains("-")) { int rcSplit = sug.IndexOf("-"); if (rcSplit > rootCompositeSplit) { rootCompositeSplit = rcSplit; rootComposite = sug.Substring(0, rootCompositeSplit).Trim(Enumerable.ToArray("-")); } } else { if (sug.StartsWith(start)) { possibleTerm.Add(sug); } } } } if (tocut == 0) { if (possibleTerm.Count == 0) { possibleTerm.AddRange(suggest); } } possibleTerm.Add(item.inputForm); if (rootCompositeSplit == 0) { rootComposite = possibleTerm.MinItem(x => x.Length); } suggest = possibleTerm.Clone(); possibleTerm.Clear(); string lemmaForm = ""; foreach (string sug in suggest) { if (sug.Contains(rootComposite, StringComparison.CurrentCultureIgnoreCase)) { possibleTerm.Add(sug); if (lemmaForm.isNullOrEmpty()) { lemmaForm = sug; } if (sug.Length < lemmaForm.Length) { lemmaForm = sug; } } } output.lemmaForm = lemmaForm; output.rootWord = rootComposite; output.inputForm = item.inputForm; foreach (string sug in possibleTerm) { output.instances.Add(sug); //log.log(sug); } } else { output.lemmaForm = item.inputForm; output.rootWord = item.inputForm; output.inputForm = item.inputForm; } //log.log("Input term: " + item.inputForm); //log.log("Root: " + output.rootWord); //log.log("Lemma: " + output.lemmaForm); //log.log("Instances: "); output.ToString(log); return(output); }