Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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);
        }