Exemple #1
0
        protected System.Drawing.Drawing2D.Matrix m; // Matrice di trasfrmazione 2D

        /// <summary>
        /// Costruttore
        /// </summary>
        public Elemento()
        {
            name     = string.Empty;
            id       = UNASSIGNED;
            sel      = false;
            clipped  = Def.ClipFlag.Inside;
            connesso = false;
            m        = new Matrix();            // Matrice identità
        }
Exemple #2
0
        public override Def.ClipFlag Clip(Vista v)
        {
            Def.ClipFlag clip1 = Nd1.Clipped;
            Def.ClipFlag clip2 = Nd2.Clipped;

            if ((clip1 | clip2) == Def.ClipFlag.Inside)                     // Entrambi gli estremi all'interno (bitwise OR è zero): no clip
            {
                clipped = Def.ClipFlag.Inside;
            }
            else if ((clip1 & clip2) != Def.ClipFlag.Inside)                //	Bitwise AND non è zero: condividono una area esterna: clip
            {
                clipped = Def.ClipFlag.Outside;
            }
            else
            {
                clipped = Def.ClipFlag.Inside;                                  // Clip parziale. Non si esegue il clipping sui double, ...
            }                                                                   // ...ma si lascia fare a Windows.Graphics, su coordiante intere, più veloce
            return(clipped);
        }
Exemple #3
0
        /// <summary>
        /// Verifica se un punto è nella finestra visibile
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public Def.ClipFlag IsInsideWorld(Point2D p)
        {
            Def.ClipFlag pos = Def.ClipFlag.Inside;
            if ((p.X - szWorldTopLeft.X) * verso.X < 0)
            {
                pos |= Def.ClipFlag.Left;
            }
            else if ((p.X - szWorldBottomRight.X) * verso.X > 0)
            {
                pos |= Def.ClipFlag.Right;
            }

            if ((p.Y - szWorldTopLeft.Y) * verso.Y < 0)
            {
                pos |= Def.ClipFlag.Top;
            }
            else if ((p.Y - szWorldBottomRight.Y) * verso.Y > 0)
            {
                pos |= Def.ClipFlag.Bottom;
            }

            return(pos);
        }