예제 #1
0
        //--------------------------------------
        public bool AddFils(C2iComposant3D fils)
        {
            if (fils == this)
            {
                return(false);
            }
            fils.m_parent = this;
            if (fils.LocationInParent != null)
            {
                fils.LocationInParent.ComposantAssocie = fils;
            }
            if (!m_listeFils.Contains(fils))
            {
                m_listeFils.Add(fils);
                CEmplacementDansParent newPlace = GetNewEmplacementForChild(fils);
                newPlace.ComposantAssocie = fils;
                if (fils.LocationInParent == null || fils.LocationInParent.GetType() != newPlace.GetType())
                {
                    fils.LocationInParent = newPlace;
                }
                RepositionneChilds();
                return(true);
            }

            return(false);
        }
예제 #2
0
        //---------------------------------------
        private bool PlaceFilsACoordonnées(IObjetACoordonnees fils, CNiveauCoordonnee[] niveaux)
        {
            if (niveaux == null || niveaux.Length == 0)
            {
                return(false);
            }
            C2iComposant3D composant = fils.GetComposantPhysique();

            if (composant == null)
            {
                return(false);
            }
            IEnumerable <IComposantPourObjetACoordonnées> lstPossibles = GetTousLesFilsPourElementsACoordonnées(niveaux[0].Prefixe);

            if (lstPossibles.Count() > 0)
            {
                IComposantPourObjetACoordonnées composantParent = lstPossibles.ElementAt(0);
                if (niveaux.Length == 1)
                {
                    return(composantParent.AddFilsWithIndex(composant, niveaux[0].Index));
                }
                else
                {
                    List <CNiveauCoordonnee> lst = new List <CNiveauCoordonnee>(niveaux);
                    lst.RemoveAt(0);
                    return(composant.PlaceFilsACoordonnées(fils, lst.ToArray()));
                }
            }
            return(false);
        }
예제 #3
0
파일: C2i3DEn2D.cs 프로젝트: ykebaili/Timos
 //-----------------------------------------------
 public C2i3DEn2D(
     C2iComposant3D composant,
     EFaceVueDynamique face)
 {
     m_composant3D = composant;
     m_faceVisible = face;
 }
예제 #4
0
 //--------------------------------------
 public void RemoveFils(C2iComposant3D fils)
 {
     if (m_listeFils.Contains(fils))
     {
         m_listeFils.Remove(fils);
         fils.m_parent = null;
     }
 }
예제 #5
0
 //--------------------------------------
 public void BringToFront(C2iComposant3D composant)
 {
     if (m_listeFils.Contains(composant))
     {
         m_listeFils.Remove(composant);
         AddFils(composant);
     }
 }
        //----------------------------------------------
        public bool AddFilsWithIndex(C2iComposant3D composant, int nIndex)
        {
            CGraduateCoordinate coord = new CGraduateCoordinate(composant);

            coord.Position             = nIndex;
            composant.LocationInParent = coord;
            AddFils(composant);
            return(true);
        }
예제 #7
0
 //--------------------------------------
 public void FrontToBack(C2iComposant3D composant)
 {
     if (m_listeFils.Contains(composant))
     {
         m_listeFils.Remove(composant);
         m_listeFils.Insert(0, composant);
         RepositionneChilds();
     }
 }
        public void AjustePosition(C2iComposant3D composant, int nGraduation)
        {
            List <C2iComposant3D> lst  = GetChildsTries();
            C2iComposant3D        cRef = null;
            int nIndex = lst.IndexOf(composant);

            if (lst.Count > nGraduation)
            {
                cRef = lst[nGraduation];
            }
            else if (lst.Count > 0)
            {
                cRef = lst[lst.Count - 1];
            }
            CPositionneurDansParentAutoFill p    = new CPositionneurDansParentAutoFill(composant, GetAxeAlignement());
            CPositionneurDansParentAutoFill pRef = null;

            if (cRef != null)
            {
                pRef = new CPositionneurDansParentAutoFill(cRef, GetAxeAlignement());
            }
            int nVal    = p.ValeurAxe;
            int nTaille = new CPositionneurDansParentAutoFill(this, GetAxeAlignement()).TailleOccupee;

            switch (FillOrientation)
            {
            case EGraduationOrientation.HorizMinToMax:
            case EGraduationOrientation.VertMinToMax:
                if (pRef == null)
                {
                    nVal = -1;
                }
                else
                {
                    nVal = pRef.ValeurAxe + Math.Sign(nGraduation - nIndex);
                }
                break;

            case EGraduationOrientation.VertMaxToMin:
            case EGraduationOrientation.HorizMaxToMin:
                if (pRef == null)
                {
                    nVal = nTaille + 1;
                }
                else
                {
                    nVal = pRef.ValeurAxe - Math.Sign(nGraduation - nIndex);
                }
                break;
            }
            p.ValeurAxe = nVal;
            MyRepositionneChilds();
        }
        public void AjustePosition(C2iComposant3D composant, int nGraduation)
        {
            int nVal = nGraduation * m_nEspaceGraduations;
            int nX   = composant.Position.X;
            int nY   = composant.Position.Y;
            int nZ   = composant.Position.Z;

            switch (HorizontalAlignment)
            {
            case E3DAlignement.Min:
                nX = 0;
                break;

            case E3DAlignement.Max:
                nX = Size.With - composant.Size.With;
                break;

            case E3DAlignement.Center:
                nX = (Size.With - composant.Size.With) / 2;
                break;
            }
            switch (VerticalAlignment)
            {
            case E3DAlignement.Min:
                nY = 0;
                break;

            case E3DAlignement.Max:
                nY = Size.Height - composant.Size.Height;
                break;

            case E3DAlignement.Center:
                nY = (Size.Height - composant.Size.Height) / 2;
                break;
            }
            switch (DepthAlignment)
            {
            case E3DAlignement.Min:
                nZ = 0;
                break;

            case E3DAlignement.Max:
                nZ = Size.Depth - composant.Size.Depth;
                break;

            case E3DAlignement.Center:
                nZ = (Size.Depth - composant.Size.Depth) / 2;
                break;
            }
            composant.Position = new C3DPoint(nX, nY, nZ);
            CPositionneurDansParentAutoFill p = new CPositionneurDansParentAutoFill(composant, GetAxeAlignement());
            int nTaille = new CPositionneurDansParentAutoFill(this, GetAxeAlignement()).TailleOccupee;

            switch (GraduationOrientation)
            {
            case EGraduationOrientation.HorizMinToMax:
            case EGraduationOrientation.VertMinToMax:
                p.ValeurAxe = nVal;
                break;

            case EGraduationOrientation.HorizMaxToMin:
            case EGraduationOrientation.VertMaxToMin:
                p.ValeurAxe = nTaille - nVal;
                break;
            }
        }
        public override CEmplacementDansParent GetNewEmplacementForChild(C2iComposant3D composantFils)
        {
            CGraduateCoordinate coord = new CGraduateCoordinate(composantFils);

            return(coord);
        }
예제 #11
0
 public CEmplacementDansParent(C2iComposant3D composant)
 {
     m_composantAssocie = composant;
 }
예제 #12
0
 //-----------------------------------------------------
 public override CEmplacementDansParent GetNewEmplacementForChild(C2iComposant3D fils)
 {
     return(new CDockStyle(fils));
 }
예제 #13
0
 public CPositionneurDansParentAutoFill(C2iComposant3D composant,
                                        EOrientationAxe axePositionne)
 {
     m_axePositionne = axePositionne;
     m_composant     = composant;
 }
예제 #14
0
 public CDockStyle(C2iComposant3D composant)
     : base(composant)
 {
 }
예제 #15
0
 public CGraduateCoordinate(C2iComposant3D composant)
     : base(composant)
 {
 }
예제 #16
0
 //-----------------------------------------------------
 public virtual CEmplacementDansParent GetNewEmplacementForChild(C2iComposant3D composantFils)
 {
     return(null);
 }