//
// Autore: Giuliano Pellegrini Parisi
//
// Classe: 3^ Inf. Sirio
//
// Data: 5 aprile 2009
//
// Oggetto: Implementazione libreria fbblGrafica2D
//
// Release: 0.1

using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;

namespace fbblGrafica2D
{
    public class StrumentiGrafica2D
    {
        private static BufferedGraphics BufferGrafico;
        private static BufferedGraphicsContext ContenutoDelBufferGrafico;
        private static Rectangle AreaDiDisegno;

        public static void Disegno(Color ColoreSfondoForm)
        {
            Form FormAttuale;

            FormAttuale = Form.ActiveForm;

            AreaDiDisegno = new Rectangle(0,0,FormAttuale.Width,FormAttuale.Height);

            ContenutoDelBufferGrafico = new BufferedGraphicsContext();

            BufferGrafico = ContenutoDelBufferGrafico.Allocate(FormAttuale.CreateGraphics(),AreaDiDisegno);

            // Alloco nello heap lo spazio per le risorse che mi permetta di disegnare nella zona di dimensione
            // AreaDiDisegno nella form FormAttuale.

            BufferGrafico.Graphics.Clear(ColoreSfondoForm); // ho scritto in memoria le modifiche

            BufferGrafico.Render(); // eseguo le modifiche apportate
        }

        public static void Disegno(int CoordinataX,int CoordinataY,int Larghezza,int Altezza,Color ColoreOggetto)
        {
            Rectangle RettangoloDiDisegno;
            LinearGradientBrush Riempi;

            RettangoloDiDisegno = new Rectangle(CoordinataX,CoordinataY,Larghezza,Altezza);

            Riempi = new LinearGradientBrush
                                    (
                                       AreaDiDisegno,
                                       Color.Black,
                                       ColoreOggetto,
                                       LinearGradientMode.BackwardDiagonal
                                    );

            BufferGrafico.Graphics.FillRectangle(Riempi, RettangoloDiDisegno);

            BufferGrafico.Render();

        }

        public static void Disegno(int CoordinataX, int CoordinataY, int Raggio, Color ColoreOggetto)
        {
            int CoordinataX1;
            int CoordinataX2;
            int CoordinataY1;
            int CoordinataY2;

            Pen Penna;
            LinearGradientBrush Riempi;
            Rectangle RettangoloDiDisegno;

            CoordinataX1 = CoordinataX - Raggio;
            CoordinataY1 = CoordinataY - Raggio;

            CoordinataX2 = CoordinataX + Raggio;
            CoordinataY2 = CoordinataY + Raggio;

            Penna = new Pen(Color.Black, 1);

            Riempi = new LinearGradientBrush 
                                         (
                                           AreaDiDisegno,
                                           Color.Black,
                                           ColoreOggetto,
                                           LinearGradientMode.BackwardDiagonal
                                         );

            RettangoloDiDisegno = new Rectangle(CoordinataX1,CoordinataY1,CoordinataX2,CoordinataY2);

            BufferGrafico.Graphics.DrawEllipse(Penna, RettangoloDiDisegno);

            BufferGrafico.Graphics.FillEllipse(Riempi, RettangoloDiDisegno);

            BufferGrafico.Render();
        }

        public static void Disegno(Point[] VettorePunti,Color ColoreOggetto)
        {
            Pen Penna;
            LinearGradientBrush Riempi;

            Penna = new Pen(Color.Black, 1);

            Riempi = new LinearGradientBrush
                                         (
                                           AreaDiDisegno,
                                           Color.Black,
                                           ColoreOggetto,
                                           LinearGradientMode.BackwardDiagonal
                                         );

            BufferGrafico.Graphics.DrawPolygon(Penna, VettorePunti);

            BufferGrafico.Graphics.FillPolygon(Riempi, VettorePunti);

            BufferGrafico.Render();

        }

    }
}
