コード例 #1
0
        /// <summary>
        /// Aggiunge un elemento alla Display List
        /// Ridimensiona array se necessario
        /// </summary>
        /// <param name="shape">Forma</param>
        /// <param name="colour">Colore</param>
        /// <param name="x1">Primo punto: X...</param>
        /// <param name="y1">...e Y</param>
        /// <param name="x2">Secondo punto: X...</param>
        /// <param name="y2">...e Y</param>
        public void Add(Elemento element, Def.Shape shape, int cx, int cy)
        {
            com[count].elemento = element;
            com[count].shape    = shape;
            //com[count].colour = colour;
            com[count].center.X = cx;
            com[count].center.Y = cy;
            if (element != null)
            {
                count++;                                // Aggiunge all'array solo le l'elemento non è nullo
            }
            if (com.Length - count < Def.FREE_MIN)
            {
                Array.Resize <Command>(ref com, count + Def.FREE_MAX);
#if (DEBUG)
                LOG.Write($"DisplayList.Command[{com.Length}]+");
#endif
            }
            return;
        }
コード例 #2
0
        /// <summary>
        /// Aggiunge un elemento, verificando:
        /// tipo di elemento, capienza liste,
        /// riferimenti agli elementi, rami già esistenti
        /// </summary>
        /// <param name="e">Elemento</param>
        /// <returns>true se riuscito</returns>
        public bool Add(Elemento e)
        {
            bool ok = false;

            if ((e is Nodo) && (!maxIDerror))                   // Se è Nodo e con ID accettabile
            {
                e.ID = freeIDnodo;
                freeIDnodo++;
                e.Name = $"N{e.ID}";
                if (nodi.Count < Def.NUM_NODI_MAX)                  // Controlla capienza
                {
                    nodi.Add((Nodo)e);
                    ok = true;
                }
            }
            else if ((e is Ramo) && (!maxIDerror))              // Se è Ramo e con ID accettabile
            {
                e.ID = freeIDramo;
                freeIDramo++;
                e.Name = $"R{e.ID}";
                if (AggiornaRifNodiInRamo((Ramo)e))
                {
                    if (rami.Count < Def.NUM_RAMI_MAX)                      // Controlla capienza
                    {
                        uint n1 = ((Ramo)e).N1;
                        uint n2 = ((Ramo)e).N2;
                        if (GetRami(n1, n2).Count == 0)
                        {
                            rami.Add((Ramo)e);
                            ok = true;
                        }
                    }
                }
            }
            CheckMaxID();
            return(ok);
        }
コード例 #3
0
 public StatoAttivo()
 {
     stat            = Def.Stat.Vista;
     dragging        = false;
     dragFromElement = null;
 }
コード例 #4
0
 /// <summary>
 /// CopyData
 /// Copia i dati serializzabili, ma non l'ID, dall'elemento 'e' a this
 /// Clone() con estensione o altro: laborioso (https://www.c-sharpcorner.com/article/cloning-objects-in-net-framework/)
 /// </summary>
 /// <param name="e">elemento da cui copiare i dati</param>
 public virtual void CopyData(Elemento e)
 {
     name = e.name; // Copia il nome
 }
コード例 #5
0
 /// <summary>
 /// Aggiunge un elemento alla Display List
 /// </summary>
 /// <param name="element">Rif. all'Elemento</param>
 /// <param name="shape"></param>
 /// <param name="colour"></param>
 /// <param name="x1">Primo punto</param>
 /// <param name="y1"></param>
 /// <param name="x2">econdo punto</param>
 /// <param name="y2"></param>
 /// <param name="cx">Centro</param>
 /// <param name="cy"></param>
 public void AddDL(Elemento element, Def.Shape shape, int cx, int cy)
 {
     dl.Add(element, shape, cx, cy);
 }