Ejemplo n.º 1
0
        public RDList MostAwayFrom(RDList edges, RDCell cell, object factPool)
        {
            int[] Dist    = edges.Data.Select(e => DistanceOfEdgeAndCell((RDEdge)e, cell)).ToArray();
            int   maxDist = Dist.Max();

            return(new RDList(edges.Data.Where(e => DistanceOfEdgeAndCell((RDEdge)e, cell) == maxDist).ToArray()));
        }
Ejemplo n.º 2
0
 protected AbstractLinkElement(IProject project, XmlElement xmlElement)
     : base(project, xmlElement)
 {
     Connections = new LinkConnections(this, Caching.Enabled);
     ReferencedFrom = new RDList<ILinkElement>(GetReferencingLinks, Caching.Enabled);
     LoadXml();
 }
Ejemplo n.º 3
0
        private void Init()
        {
            RecycleBin          = new RecycleBin(this);
            PublicationTargets  = new RDList <IPublicationTarget>(GetPublicationTargets, Caching.Enabled);
            PublicationFolders  = new RDList <IPublicationFolder>(GetPublicationFolders, Caching.Enabled);
            PublicationPackages = new RDList <IPublicationPackage>(GetPublicationPackages, Caching.Enabled);
            InfoAttributes      = new IndexedCachedList <int, IInfoAttribute>(GetInfoAttributes, x => x.Id, Caching.Enabled);

            ContentClassFolders = new ContentClassFolders(this, Caching.Enabled);
            Folders             = new Folders(this, Caching.Enabled);
            ProjectVariants     = new ProjectVariants(this, Caching.Enabled);
            LanguageVariants    = new LanguageVariants(this, Caching.Enabled);

            DatabaseConnections = new DatabaseConnections(this, Caching.Enabled);
            Syllables           = new Syllables(this, Caching.Enabled);
            Users = new ProjectUsers(this, Caching.Enabled);

            Workflows      = new ProjectWorkflow(this, Caching.Enabled);
            Categories     = new Categories(this);
            Keywords       = new RDList <IKeyword>(GetKeywords, Caching.Enabled);
            AssignedGroups = new ProjectGroups(this, Caching.Enabled);

            OnlineUsers = new NameIndexedRDList <IUser>(GetOnlineUsers, Caching.Enabled);

            _clipboard = new ProjectClipboard(this);

            //AuthorizationPackages = new AuthorizationPackages(this);
        }
Ejemplo n.º 4
0
 private void InitProperties()
 {
     LinkElements = new RDList<ILinkElement>(GetLinks, Caching.Enabled);
     ContentElements = new NameIndexedRDList<IPageElement>(GetContentElements, Caching.Enabled);
     ReferencedFrom = new RDList<ILinkElement>(GetReferencingLinks, Caching.Enabled);
     AssignedKeywords = new PageAssignedKeywords(this, Caching.Enabled);
     LinkedFrom = new RDList<ILinkingAndAppearance>(GetLinksFrom, Caching.Enabled);
 }
Ejemplo n.º 5
0
        internal ServerManager(Session session)
        {
            _session = session;

            Groups                = new Groups(_session, Caching.Enabled);
            Projects              = new Projects(_session, Caching.Enabled);
            DatabaseServers       = new DatabaseServers(_session, Caching.Enabled);
            Users                 = new Users(_session, Caching.Enabled);
            Modules               = new IndexedRDList <ModuleType, IModule>(GetModules, x => x.Type, Caching.Enabled);
            AsynchronousProcesses = new RDList <IAsynchronousProcess>(GetAsynchronousProcesses, Caching.Disabled);
            ApplicationServers    = new ApplicationServers(_session, Caching.Enabled);
        }
Ejemplo n.º 6
0
 private void Removeforever_IteminDb()
 {
     for (int i = 0; i < RDList.Count(); i++)
     {
         foreach (var item in Model.DataProvider.Ins.DB.NHANVIENs)
         {
             while (item == RDList[i])
             {
                 Model.Nhanvien_Service.Delete(item);
                 break;
             }
         }
     }
     Model.DataProvider.Ins.DB.SaveChanges();
 }
 private void Restone_IteminDb()
 {
     for (int i = 0; i < RDList.Count(); i++)
     {
         foreach (var item in Model.DataProvider.Ins.DB.MATHANGs.ToList())
         {
             while (item == RDList[i])
             {
                 item.IsDeleted = false;
                 Model.DataProvider.Ins.DB.SaveChanges();
                 break;
             }
         }
     }
 }
 private void Removeforever_IteminDb()
 {
     for (int i = 0; i < RDList.Count(); i++)
     {
         foreach (var item in Model.DataProvider.Ins.DB.CHITIETPHIEUXUATs)
         {
             while (item == RDList[i])
             {
                 Model.Xuathang_Service.Delete(item);
                 break;
             }
         }
     }
     Model.DataProvider.Ins.DB.SaveChanges();
 }
Ejemplo n.º 9
0
        private void Restone_IteminDb()
        {
            for (int i = 0; i < RDList.Count(); i++)
            {
                foreach (var item in Model.DataProvider.Ins.DB.NHANVIENs.ToList())
                {
                    while (item == RDList[i])
                    {
                        Restore_dboTaikhoan(item.ma_nhanvien);

                        item.IsDeleted = false;
                        Model.DataProvider.Ins.DB.SaveChanges();
                        break;
                    }
                }
            }
        }
Ejemplo n.º 10
0
 private void RemoveIteminList()
 {
     for (int i = 0; i < List.Count(); i++)
     {
         while (RDList.Where(x => x == List[i]).Count() != 0)
         {
             if (List[i] == List[List.Count() - 1])
             {
                 List.Remove(List[i]);
                 break;
             }
             else
             {
                 List.Remove(List[i]);
             }
         }
         ;
     }
 }
Ejemplo n.º 11
0
        public RDList CommonSuccessiveEdgesOf(RDEdge lhs, RDEdge rhs, object factPool)
        {
            RDList llist  = SuccessiveEdgesOf(lhs, factPool);
            RDList rlist  = SuccessiveEdgesOf(rhs, factPool);
            RDList result = new RDList();

            foreach (RDElement e1 in llist.Data)
            {
                foreach (RDElement e2 in rlist.Data)
                {
                    if ((e1 as RDEdge).X == (e2 as RDEdge).X && (e1 as RDEdge).Y == (e2 as RDEdge).Y && (e1 as RDEdge).Direction == (e2 as RDEdge).Direction)
                    {
                        result.Data.Add(e1);
                        break;
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 12
0
 protected AbstractLinkElement(IProject project, XmlElement xmlElement) : base(project, xmlElement)
 {
     Connections    = new LinkConnections(this, Caching.Enabled);
     ReferencedFrom = new RDList <ILinkElement>(GetReferencingLinks, Caching.Enabled);
     LoadXml();
 }
Ejemplo n.º 13
0
        public Nhanvien_Deleted_ViewModel()
        {
            List   = new ObservableCollection <Model.NHANVIEN>(Model.DataProvider.Ins.DB.NHANVIENs.Where(x => x.IsDeleted == true));
            RDList = new ObservableCollection <Model.NHANVIEN>();

            Opendel     = false;
            Openres     = false;
            Opendelete  = false;
            Openrestore = false;

            Content      = string.Empty;
            SelectedItem = null;

            CloseDialog_Command = new RelayCommand <MaterialDesignThemes.Wpf.DialogHost>(p =>
            {
                return(true);
            }, p =>
            {
                p.IsOpen = false;
            });

            #region Khoi phuc/ Xoa 1 dong
            DeleteShow_Command = new RelayCommand <Button>(p =>
            {
                if (Openrestore == true || Opendelete == true || Openres == true || Opendel == true)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                Opendelete = true;
                Content    = " Xóa vĩnh viễn bản ghi này";

                string id    = p.Uid.ToString();
                SelectedItem = Model.DataProvider.Ins.DB.NHANVIENs.Where(x => x.ma_nhanvien == id).SingleOrDefault();
            });

            RestoreShow_Command = new RelayCommand <Button>(p =>
            {
                if (Openrestore == true || Opendelete == true || Openres == true || Opendel == true)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                Openrestore = true;
                Content     = " Khôi phục bản ghi này";

                string id    = p.Uid.ToString();
                SelectedItem = Model.DataProvider.Ins.DB.NHANVIENs.Where(x => x.ma_nhanvien == id).SingleOrDefault();
            });

            Delete_Command = new RelayCommand <Button>(p =>
            {
                return(true);
            }, p =>
            {
                Model.Nhanvien_Service.Delete(SelectedItem);
                Model.DataProvider.Ins.DB.SaveChanges();

                List.Remove(SelectedItem);
                Opendelete = false;
            });

            Restore_Command = new RelayCommand <Button>(p =>
            {
                return(true);
            }, p =>
            {
                SelectedItem.IsDeleted = false;
                Model.DataProvider.Ins.DB.SaveChanges();
                Restore_dboTaikhoan(SelectedItem.ma_nhanvien);

                List.Remove(SelectedItem);
                Openrestore = false;
            });
            #endregion

            #region Khoi phuc / Xoa nhieu dong

            AddRDList_Command = new RelayCommand <CheckBox>(p =>
            {
                return(true);
            }, p =>
            {
                RDList.Add(List.Where(x => x.ma_nhanvien == p.Uid.ToString()).SingleOrDefault());
            });

            RemoveRDList_Command = new RelayCommand <CheckBox>(p =>
            {
                return(true);
            }, p =>
            {
                RDList.Remove(List.Where(x => x.ma_nhanvien == p.Uid.ToString()).SingleOrDefault());
            });

            ResShow_Command = new RelayCommand <object>(p =>
            {
                if (RDList.Count() == 0)
                {
                    return(false);
                }

                if (Openrestore == true || Opendelete == true || Openres == true || Opendel == true)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                Openres = true;
                Content = " Khôi phục tất cả các bản ghi được chọn";
            });

            Res_Command = new RelayCommand <object>(p =>
            {
                if (RDList.Count() == 0)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                Restone_IteminDb();
                RemoveIteminList();

                RDList  = new ObservableCollection <Model.NHANVIEN>();
                Openres = false;
            });

            DelShow_Command = new RelayCommand <object>(p =>
            {
                if (RDList.Count() == 0)
                {
                    return(false);
                }

                if (Openrestore == true || Opendelete == true || Openres == true || Opendel == true)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                Opendel = true;
                Content = " Xóa vĩnh viễn tất cả các bản ghi được chọn";
            });

            Del_Command = new RelayCommand <object>(p =>
            {
                if (RDList.Count() == 0)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                Removeforever_IteminDb();
                RemoveIteminList();

                RDList  = new ObservableCollection <Model.NHANVIEN>();
                Opendel = false;
            });
            #endregion

            #region Sap xep

            OrderbyTen_Command = new RelayCommand <object>(p =>
            {
                if (List.Count() == 0)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                ObservableCollection <Model.NHANVIEN> chkList = new ObservableCollection <Model.NHANVIEN>(List.OrderByDescending(x => x.ten_nhanvien));

                if (List[0] == chkList[0])
                {
                    List = new ObservableCollection <Model.NHANVIEN>(List.OrderBy(x => x.ten_nhanvien));
                }
                else
                {
                    List = new ObservableCollection <Model.NHANVIEN>(chkList);
                }
            });

            OrderbyDiachi_Command = new RelayCommand <object>(p =>
            {
                if (List.Count() == 0)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                ObservableCollection <Model.NHANVIEN> chkList = new ObservableCollection <Model.NHANVIEN>(List.OrderByDescending(x => x.diachi));

                if (List[0] == chkList[0])
                {
                    List = new ObservableCollection <Model.NHANVIEN>(List.OrderBy(x => x.diachi));
                }
                else
                {
                    List = new ObservableCollection <Model.NHANVIEN>(chkList);
                }
            });

            OrderbyVitri_Command = new RelayCommand <object>(p =>
            {
                if (List.Count() == 0)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                ObservableCollection <Model.NHANVIEN> chkList = new ObservableCollection <Model.NHANVIEN>(List.OrderByDescending(x => x.QUYEN.ma_quyen));

                if (List[0] == chkList[0])
                {
                    List = new ObservableCollection <Model.NHANVIEN>(List.OrderBy(x => x.QUYEN.ma_quyen));
                }
                else
                {
                    List = new ObservableCollection <Model.NHANVIEN>(chkList);
                }
            });

            #endregion
        }
Ejemplo n.º 14
0
        public bool AllColorOf(RDList cells, RDNumber result, object factPool)
        {
            var resultGroup = cells.Data.Select(cell => ColorOf(cell as RDCell, result, factPool)).ToArray();

            return(resultGroup.Contains(true));
        }
        public Mathang_Deleted_ViewModel()
        {
            List   = new ObservableCollection <Model.MATHANG>(Model.DataProvider.Ins.DB.MATHANGs.Where(x => x.IsDeleted == true));
            RDList = new ObservableCollection <Model.MATHANG>();

            Opendel     = false;
            Openres     = false;
            Opendelete  = false;
            Openrestore = false;

            Content      = string.Empty;
            SelectedItem = null;

            CloseDialog_Command = new RelayCommand <MaterialDesignThemes.Wpf.DialogHost>(p =>
            {
                return(true);
            }, p =>
            {
                p.IsOpen = false;
            });

            #region Khoi phuc/ Xoa 1 dong
            DeleteShow_Command = new RelayCommand <Button>(p =>
            {
                if (Openrestore == true || Opendelete == true || Openres == true || Opendel == true)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                Opendelete = true;
                Content    = " Xóa vĩnh viễn bản ghi này";

                string id    = p.Uid.ToString();
                SelectedItem = Model.DataProvider.Ins.DB.MATHANGs.Where(x => x.ma_mathang == id).SingleOrDefault();
            });

            RestoreShow_Command = new RelayCommand <Button>(p =>
            {
                if (Openrestore == true || Opendelete == true || Openres == true || Opendel == true)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                Openrestore = true;
                Content     = " Khôi phục bản ghi này";

                string id    = p.Uid.ToString();
                SelectedItem = Model.DataProvider.Ins.DB.MATHANGs.Where(x => x.ma_mathang == id).SingleOrDefault();
            });

            Delete_Command = new RelayCommand <Button>(p =>
            {
                return(true);
            }, p =>
            {
                Model.Mathang_Service.Delete(SelectedItem);
                Model.DataProvider.Ins.DB.SaveChanges();

                List.Remove(SelectedItem);
                Opendelete = false;
            });

            Restore_Command = new RelayCommand <Button>(p =>
            {
                return(true);
            }, p =>
            {
                SelectedItem.IsDeleted = false;
                Model.DataProvider.Ins.DB.SaveChanges();

                List.Remove(SelectedItem);
                Openrestore = false;
            });
            #endregion

            #region Khoi phuc / Xoa nhieu dong

            AddRDList_Command = new RelayCommand <CheckBox>(p =>
            {
                return(true);
            }, p =>
            {
                RDList.Add(List.Where(x => x.ma_mathang == p.Uid.ToString()).SingleOrDefault());
            });

            RemoveRDList_Command = new RelayCommand <CheckBox>(p =>
            {
                return(true);
            }, p =>
            {
                RDList.Remove(List.Where(x => x.ma_mathang == p.Uid.ToString()).SingleOrDefault());
            });

            ResShow_Command = new RelayCommand <object>(p =>
            {
                if (RDList.Count() == 0)
                {
                    return(false);
                }

                if (Openrestore == true || Opendelete == true || Openres == true || Opendel == true)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                Openres = true;
                Content = " Khôi phục tất cả các bản ghi được chọn";
            });

            Res_Command = new RelayCommand <object>(p =>
            {
                if (RDList.Count() == 0)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                Restone_IteminDb();
                RemoveIteminList();

                RDList  = new ObservableCollection <Model.MATHANG>();
                Openres = false;
            });

            DelShow_Command = new RelayCommand <object>(p =>
            {
                if (RDList.Count() == 0)
                {
                    return(false);
                }

                if (Openrestore == true || Opendelete == true || Openres == true || Opendel == true)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                Opendel = true;
                Content = " Xóa vĩnh viễn tất cả các bản ghi được chọn";
            });

            Del_Command = new RelayCommand <object>(p =>
            {
                if (RDList.Count() == 0)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                Removeforever_IteminDb();
                RemoveIteminList();

                RDList  = new ObservableCollection <Model.MATHANG>();
                Opendel = false;
            });
            #endregion

            #region Phan sap xep

            OrderbyTenMathang_Command = new RelayCommand <object>(p =>
            {
                if (List.Count() == 0)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                ObservableCollection <Model.MATHANG> chkList = new ObservableCollection <Model.MATHANG>(List.OrderByDescending(x => x.ten_mathang));

                if (List[0] == chkList[0])
                {
                    List = new ObservableCollection <Model.MATHANG>(List.OrderBy(x => x.ten_mathang));
                }
                else
                {
                    List = new ObservableCollection <Model.MATHANG>(chkList);
                }
            });

            OrderbyTennhacungcap_Command = new RelayCommand <object>(p =>
            {
                if (List.Count() == 0)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                ObservableCollection <Model.MATHANG> chkList = new ObservableCollection <Model.MATHANG>(List.OrderByDescending(x => x.NHACUNGCAP.ten_nhacungcap));

                if (List[0] == chkList[0])
                {
                    List = new ObservableCollection <Model.MATHANG>(List.OrderBy(x => x.NHACUNGCAP.ten_nhacungcap));
                }
                else
                {
                    List = new ObservableCollection <Model.MATHANG>(chkList);
                }
            });

            OrderbyTenloai_Command = new RelayCommand <object>(p =>
            {
                if (List.Count() == 0)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                ObservableCollection <Model.MATHANG> chkList = new ObservableCollection <Model.MATHANG>(List.OrderByDescending(x => x.LOAIHANG.ten_loaihang));

                if (List[0] == chkList[0])
                {
                    List = new ObservableCollection <Model.MATHANG>(List.OrderBy(x => x.LOAIHANG.ten_loaihang));
                }
                else
                {
                    List = new ObservableCollection <Model.MATHANG>(chkList);
                }
            });

            OrderbyTendonvi_Command = new RelayCommand <object>(p =>
            {
                if (List.Count() == 0)
                {
                    return(false);
                }

                return(true);
            }, p =>
            {
                ObservableCollection <Model.MATHANG> chkList = new ObservableCollection <Model.MATHANG>(List.OrderByDescending(x => x.DONVITINH.ten_donvi));

                if (List[0] == chkList[0])
                {
                    List = new ObservableCollection <Model.MATHANG>(List.OrderBy(x => x.DONVITINH.ten_donvi));
                }
                else
                {
                    List = new ObservableCollection <Model.MATHANG>(chkList);
                }
            });

            #endregion
        }
Ejemplo n.º 16
0
 public RDList WhiteSubsetOf(RDList edgelist, object factPool)
 {
     return(new RDList(edgelist.Data.Where(
                           e => ColorOf((RDEdge)e, factPool).Data == 2).ToArray()));
 }
Ejemplo n.º 17
0
 public RDList ColorsOf(RDList edges, object factPool)
 {
     return(new RDList(edges.Data.Select(
                           e => ColorOf((RDEdge)e, factPool)).ToArray()));
 }
Ejemplo n.º 18
0
        internal ServerManager(Session session)
        {
            _session = session;

            Groups = new Groups(_session, Caching.Enabled);
            Projects = new Projects(_session, Caching.Enabled);
            DatabaseServers = new DatabaseServers(_session, Caching.Enabled);
            Users = new Users(_session, Caching.Enabled);
            Modules = new IndexedRDList<ModuleType, IModule>(GetModules, x => x.Type, Caching.Enabled);
            AsynchronousProcesses = new RDList<IAsynchronousProcess>(GetAsynchronousProcesses, Caching.Disabled);
            ApplicationServers = new ApplicationServers(_session, Caching.Enabled);
        }
Ejemplo n.º 19
0
 protected AbstractLinkElement(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
     Connections    = new LinkConnections(this, Caching.Enabled);
     ReferencedFrom = new RDList <ILinkElement>(GetReferencingLinks, Caching.Enabled);
 }
        public void GraphCut(string name, Dictionary <string, RDElement> dict, object factPool, Rule rule, Action <int> callBack, int callBackID)
        {
            FactPool pool = (FactPool)factPool;
            Queue <KeyValuePair <int, int> > myq = new Queue <KeyValuePair <int, int> >();

            bool[,] inq = new bool[pool.X + 2, pool.Y + 2];
            KeyValuePair <int, int>[,] parents = new KeyValuePair <int, int> [pool.X + 2, pool.Y + 2];

            inq[0, 0]     = true;
            parents[0, 0] = new KeyValuePair <int, int>(-1, -1);
            myq.Enqueue(new KeyValuePair <int, int>(0, 0));
            while (myq.Count > 0)
            {
                KeyValuePair <int, int> kv = myq.Dequeue();
                int x = kv.Key, y = kv.Value;
                for (int d = 0; d < 4; ++d)
                {
                    int tx = x + dirX[d], ty = y + dirY[d];
                    if (tx >= 0 && ty >= 0 && tx <= pool.X + 1 && ty <= pool.Y + 1 && !inq[tx, ty])
                    {
                        if (GetEdgeState(GetEdgeBetweenCell(x, y, tx, ty), factPool) > 0)
                        {
                            inq[tx, ty]     = true;
                            parents[tx, ty] = kv;
                            myq.Enqueue(new KeyValuePair <int, int>(tx, ty));
                        }
                    }
                }
            }
            for (int x = 0; x <= pool.X; ++x)
            {
                for (int y = 0; y <= pool.Y; ++y)
                {
                    if (!inq[x, y])
                    {
                        continue;
                    }
                    for (int d = 0; d < 2; ++d)
                    {
                        int tx = x + dirX[d], ty = y + dirY[d];
                        if (!inq[tx, ty])
                        {
                            continue;
                        }
                        if (GetEdgeState(GetEdgeBetweenCell(x, y, tx, ty), factPool) == 0)
                        {
                            RDList list = new RDList();
                            list.Data.Add(GetEdgeBetweenCell(x, y, tx, ty));
                            while (parents[x, y].Key != -1)
                            {
                                list.Data.Add(GetEdgeBetweenCell(x, y, parents[x, y].Key, parents[x, y].Value));
                                KeyValuePair <int, int> kv = parents[x, y];
                                x = kv.Key;
                                y = kv.Value;
                            }
                            while (parents[tx, ty].Key != -1)
                            {
                                list.Data.Add(GetEdgeBetweenCell(tx, ty, parents[tx, ty].Key, parents[tx, ty].Value));
                                KeyValuePair <int, int> kv = parents[tx, ty];
                                tx = kv.Key;
                                ty = kv.Value;
                            }
                            dict[name] = list;
                            //Console.WriteLine("Let's See:");
                            //Console.WriteLine(list);
                            callBack.Invoke(callBackID);
                            // Data has been changed, return directly
                            dict.Remove(name);
                            return;
                        }
                    }
                }
            }
        }
Ejemplo n.º 21
0
 protected AbstractLinkElement(IProject project, Guid guid, ILanguageVariant languageVariant)
     : base(project, guid, languageVariant)
 {
     Connections = new LinkConnections(this, Caching.Enabled);
     ReferencedFrom = new RDList<ILinkElement>(GetReferencingLinks, Caching.Enabled);
 }
Ejemplo n.º 22
0
 public RDList ColorsOf(RDList cells, object factPool)
 {
     return(new RDList(cells.Data.Select(
                           e => ColorOf((RDCell)e, factPool)).ToArray()));
 }
Ejemplo n.º 23
0
        public bool AllColorOf(RDList edges, RDNumber result, object factPool)
        {
            var resultGroup = edges.Data.Select(edge => ColorOf(edge as RDEdge, result, factPool)).ToArray();

            return(resultGroup.Contains(true));
        }
Ejemplo n.º 24
0
 public RDList BlackSubsetOf(RDList celllist, object factPool)
 {
     return(new RDList(celllist.Data.Where(
                           e => ColorOf((RDCell)e, factPool).Data == 1).ToArray()));
 }
        public void Rope(string name, Dictionary <string, RDElement> dict, object factPool, Rule rule, Action <int> callBack, int callBackID)
        {
            FactPool pool = (FactPool)factPool;

            bool[,] visit = new bool[pool.X + 2, pool.Y + 2];
            int total1Count = 0;

            for (int x = 1; x <= pool.X + 1; ++x)
            {
                for (int y = 1; y <= pool.Y + 1; ++y)
                {
                    if (!visit[x, y])
                    {
                        int totalEdges = 0;
                        for (int d = 0; d < 4; ++d)
                        {
                            int tx = x + dirX[d], ty = y + dirY[d];
                            if (GetEdgeState(GetEdgeBetweenVertex(x, y, tx, ty), factPool) == 1)
                            {
                                ++totalEdges;
                            }
                        }
                        if (totalEdges == 1)
                        {
                            total1Count++;
                        }
                    }
                }
            }
            if (total1Count <= 2)
            {
                return;                  // Maybe a single roop
            }
            for (int x = 1; x <= pool.X + 1; ++x)
            {
                for (int y = 1; y <= pool.Y + 1; ++y)
                {
                    if (!visit[x, y])
                    {
                        int totalEdges = 0;
                        for (int d = 0; d < 4; ++d)
                        {
                            int tx = x + dirX[d], ty = y + dirY[d];
                            if (GetEdgeState(GetEdgeBetweenVertex(x, y, tx, ty), factPool) == 1)
                            {
                                ++totalEdges;
                            }
                        }
                        if (totalEdges == 1)
                        {
                            visit[x, y] = true;
                            RDList list = new RDList();
                            int    lastX = -2, lastY = -2, tx = -2, ty = -2, cx = x, cy = y;
                            bool   end;
                            while (true)
                            {
                                end = true;
                                for (int d = 0; d < 4; ++d)
                                {
                                    tx = cx + dirX[d];
                                    ty = cy + dirY[d];
                                    if (GetEdgeState(GetEdgeBetweenVertex(cx, cy, tx, ty), factPool) == 1 &&
                                        (tx != lastX || ty != lastY))
                                    {
                                        list.Data.Add(GetEdgeBetweenVertex(cx, cy, tx, ty));
                                        end = false;
                                        break;
                                    }
                                }
                                if (end)
                                {
                                    break;
                                }
                                lastX = cx;
                                lastY = cy;
                                cx    = tx;
                                cy    = ty;
                                if (visit[cx, cy])// Error!
                                {
                                    return;
                                }
                                visit[cx, cy] = true;
                            }
                            //Console.WriteLine(list.Data.First() + "-" + list.Data.Last());
                            dict[name] = list;
                            callBack.Invoke(callBackID);
                        }
                    }
                }
            }
            dict.Remove(name);
            //Console.WriteLine("End");
        }
Ejemplo n.º 26
0
 private void InitProperties()
 {
     LinkElements = new RDList<ILinkElement>(GetLinks, Caching.Enabled);
     ContentElements = new NameIndexedRDList<IPageElement>(GetContentElements, Caching.Enabled);
     ReferencedFrom = new RDList<ILinkElement>(GetReferencingLinks, Caching.Enabled);
     AssignedKeywords = new PageAssignedKeywords(this, Caching.Enabled);
     LinkedFrom = new RDList<ILinkingAndAppearance>(GetLinksFrom, Caching.Enabled);
 }