Пример #1
0
        static void Main(string[] args)
        {
            // creamos un objeto PictureProvider y obtenemos una imagen
            PictureProvider p   = new PictureProvider();
            IPicture        pic = p.GetPicture("C:/Users/FIT/programacion2/ejercicio_en_clase/ComposicionYDelegacion/PII_Pipes_Filters-master/gato.png");

            // creamos un pipeNull
            IPipe pipenull = new PipeNull();

            // creamos instancias de todos los filtros que nos interecen
            FilterSave            filtersave            = new FilterSave("../../gato2.png");
            FilterTwitter         filtertwitter         = new FilterTwitter(filtersave.path);
            FilterNegative        filternegative        = new FilterNegative();
            FilterGreyscale       filtergreyscale       = new FilterGreyscale();
            ConditionalFilter     conditionalfilter     = new ConditionalFilter(filtersave.path);
            FilterBlurConvolution filterblurconvolution = new FilterBlurConvolution();

            // creamos instancias de todos los pipeSerial que vayamos a utilizar
            IPipe pipeserial7 = new PipeSerial(filtertwitter, pipenull);
            IPipe pipeserial6 = new PipeSerial(filtersave, pipeserial7);               // en este caso se sobrescribe la imagen guardada ya que estoy usando el mismo filtersave con el mismo path
            IPipe pipeserial5 = new PipeSerial(filterblurconvolution, pipeserial6);
            IPipe pipeserial4 = new PipeSerial(filtertwitter, pipenull);
            IPipe pipefork    = new PipeFork(conditionalfilter, pipeserial4, pipeserial5);
            IPipe pipeserial3 = new PipeSerial(filtersave, pipefork);
            IPipe pipeserial2 = new PipeSerial(filternegative, pipeserial3);
            IPipe pipeserial  = new PipeSerial(filtergreyscale, pipeserial2);

            // enviamos la imagen al primer pipeSerial
            pipeserial.Send(pic);
        }
Пример #2
0
        static void Main(string[] args)
        {
            PictureProvider p   = new PictureProvider();
            IPicture        pic = p.GetPicture(@"Silla.jpg");

            PipeSerial greyscale = new PipeSerial(new FilterGreyscale(), new PipeNull());

            pic = greyscale.Send(pic);

            //p.SavePicture(pic,@"matrix2.jpg");

            /*
             * La idea es que cuando pase por el FilterSaving se guarde la imagen con el filtro aplicado de donde viene.
             * Le paso la foto al pipe grayScale que lo va a pasar por FilterGrayScale y de ahi a un pipe que se llama saveImage
             * creado para este ejercicio, este pipe le aplica el filto que guarda la imagen. De ahi se va al pipe fork donde decide
             * dependiendo de si tiene cara o no si va al twitterfilter o al negative.
             * Después de ese filtro llega al pipe null.
             */
            FilterSaving saving = FilterSaving.Instance;

            PipeSerial saveImageAlreadyWentThrough = new PipeSerial(saving, new PipeNull());
            PipeSerial negative = new PipeSerial(new FilterNegative(), saveImageAlreadyWentThrough);

            PipeSerial twitterFilter = new PipeSerial(new TwitterFilter(), new PipeNull());

            PipeFork DoesItHaveAFace = new PipeFork(twitterFilter, negative, new HasFaceConditional());

            PipeSerial saveImage = new PipeSerial(saving, DoesItHaveAFace);
            PipeSerial grayScale = new PipeSerial(new FilterGreyscale(), saveImage);

            grayScale.Send(pic);
        }
Пример #3
0
        static void Main(string[] args)
        {
            PictureProvider provider = new PictureProvider();
            IPicture        picture  = provider.GetPicture("../../assets/yacht.jpg");

            IPipe   pipeNull          = new PipeNull();
            IFilter filterSavePicture = new FilterSavePicture();

            IFilter filterPublish   = new FilterPublishPicture();
            IPipe   thirdPipeSerial = new PipeSerial(filterPublish, pipeNull);

            IPipe secondPipeSerialSave = new PipeSerial(filterSavePicture, thirdPipeSerial);

            IFilter filterNegative   = new FilterNegative();
            IPipe   secondPipeSerial = new PipeSerial(filterNegative, secondPipeSerialSave);

            IPipe firstPipeSerialSave = new PipeSerial(filterSavePicture, secondPipeSerial);

            IFilter filterGreyScale = new FilterGreyscale();

            IPipe pipeConditional = new PipeConditionalBifurcation(thirdPipeSerial, secondPipeSerial);
            IPipe pipeSerial      = new PipeSerial(filterGreyScale, firstPipeSerialSave);

            IPicture newPicture = pipeSerial.Send(picture);
        }
Пример #4
0
        static void Main(string[] args)
        {
            PictureProvider p   = new PictureProvider();
            IPicture        pic = p.GetPicture("TestImg.jpg"); //consumo imagen

            //Parte 1
            PipeSerial firstSerial = new PipeSerial(new FilterGreyscale(), new PipeSerial(new FilterNegative(), new PipeNull())); //Genero mi series de Pipes

            //firstSerial.Send(pic); //envío la pic por la serie de pipes del ejercicio



            //Parte 2
            PipeSerial secondSerial = new PipeSerial(new FilterGreyscale(),
                                                     new PipeSerial(new FilterSave(), //en este caso entre filtro y filtro guardo la imagen
                                                                    new PipeSerial(new FilterNegative(),
                                                                                   new PipeSerial(new FilterSave(),
                                                                                                  new PipeNull())))); //Genero mi series de Pipes

            //secondSerial.Send(pic); //envio la pic por la serie de pipes de la segunda parte del ejercicio

            //Parte 3

            PipeSerial thirdSerial = new PipeSerial(new FilterGreyscale(),
                                                    new PipeSerial(new FilterSave(), //en este caso entre filtro y filtro guardo la imagen
                                                                   new PipeSerial(new FilterNegative(),
                                                                                  new PipeSerial(new FilterSave(),
                                                                                                 new PipeSerial(new FilterTwitter(), //publico la imagen con todos los filtros en ucuTW
                                                                                                                new PipeNull()))))); //Genero mi series de Pipes

            //thirdSerial.Send(pic); //envio la pic por la serie de pipes de la tercera parte del ejercicio


            //Parte 4
            PipeSerial fourthSerial = new PipeSerial(new FilterGreyscale(),
                                                     new PipeSerial(new FilterSave(),                                   //guardo
                                                                    new PipeFork(                                       //ingreso a la bifurcación, fue modificada para primero tener que aplicar el filtro condicional
                                                                        new FilterConditionalFace(),                    //paso filtro de condición
                                                                        new PipeSerial(new FilterTwitter(),             //si es true envío a twitter
                                                                                       new PipeNull()),
                                                                        new PipeSerial(new FilterNegative(),            //serie si es false, primero aplico negativo
                                                                                       new PipeSerial(new FilterSave(), //luego de aplicar negativo, guardo
                                                                                                      new PipeNull())))

                                                                    ));

            //fourthSerial.Send(pic); //envio la pic por la serie de pipes de la cuarta parte del ejercicio

            //Parte 5 (bonus)
            PipeSerial fifthSerial = new PipeSerial(new FilterBlurConvolution(),                       //Aplico filtro de convolución
                                                    new PipeSerial(new FilterSave(),                   //Guardo la imagen con el filtro aplicada
                                                                   new PipeSerial(new FilterTwitter(), //subo la misma a twitter
                                                                                  new PipeNull())));

            fifthSerial.Send(pic); //envío la pic por la serie de pipes de la quinta parte del ejercicio
        }
        static void Main(string[] args)
        {
            PictureProvider p         = new PictureProvider();
            IPicture        pic       = p.GetPicture("..\\..\\ImagenPruebas.jpg");
            IFilter         filter    = new FilterGreyscale();
            IFilter         filterDos = new FilterNegative();
            IPipe           isnull    = new PipeNull();

            IPipe serialDos = new PipeSerial(filterDos, isnull);
            IPipe serial    = new PipeSerial(filter, serialDos);

            IPicture pic2 = serial.Send(pic);
            IPicture pic3 = serialDos.Send(pic2);

            p.SavePicture(pic2, "..\\..\\ImagenPruebas1.jpg");
            p.SavePicture(pic3, "..\\..\\ImagenPruebas2.jpg");
        }
Пример #6
0
        static void Main(string[] args)
        {
            PictureProvider p   = new PictureProvider();
            IPicture        pic = p.GetPicture(@"./../../images/bill.jpg");

            var blur     = new FilterBlurConvolution();
            var grey     = new FilterGreyscale();
            var negative = new FilterNegative();
            var invento  = new FilterInvento();
            var saving   = FilterSave.Instance;
            var pipe1    = new PipeSerial(saving, new PipeNull());
            var pipe2    = new PipeSerial(grey, pipe1);
            var twitt    = new PipeSerial(new FilterTwitter(), pipe2);
            var pipe3    = new PipeSerial(saving, twitt);
            var pipe4    = new PipeSerial(negative, pipe3);

            pipe4.Send(pic);


            // var fork = new PipeFork(prueba2, prueba1);
        }
Пример #7
0
        static void Main(string[] args)
        {
            // Se obtiene la imagen.
            PictureProvider p   = new PictureProvider();
            IPicture        pic = p.GetPicture(@"download.jpg");

            // Se crean los filtros que se van a utilizar.
            FilterGreyscale  filterGreyscale  = new FilterGreyscale();
            FilterNegative   filterNegative   = new FilterNegative();
            FilterSaveImage  filterSaveImage  = new FilterSaveImage();
            FilterTwitterApi filterTwitterApi = new FilterTwitterApi();
            FilterHasFace    filterHasFace    = new FilterHasFace();


            // Parte 1

            /*
             * PipeNull pipeNull = new PipeNull();
             * PipeSerial pipeFilterNegative = new PipeSerial(filterNegative, pipeNull);
             * PipeSerial pipeFilterGreyScale = new PipeSerial(filterGreyscale, pipeFilterNegative);
             * pipeFilterGreyScale.Send(pic);*/


            // Parte 2

            /*
             * PipeNull pipeNull = new PipeNull();
             * PipeSerial pipeFilterSaveImageTwo = new PipeSerial(filterSaveImage, pipeNull);
             * PipeSerial pipeFilterNegative = new PipeSerial(filterNegative, pipeFilterSaveImageTwo);
             * PipeSerial pipeFilterSaveImageOne = new PipeSerial(filterSaveImage, pipeFilterNegative);
             * PipeSerial pipeFilterGreyScale = new PipeSerial(filterGreyscale, pipeFilterSaveImageOne);
             * pipeFilterGreyScale.Send(pic);*/

            // Parte 3

            /*
             * PipeNull pipeNull = new PipeNull();
             * PipeSerial pipeTwitterApiTwo = new PipeSerial(filterTwitterApi, pipeNull);
             * PipeSerial pipeFilterSaveImageTwo = new PipeSerial(filterSaveImage, pipeTwitterApiTwo);
             * PipeSerial pipeFilterNegative = new PipeSerial(filterNegative, pipeFilterSaveImageTwo);
             * PipeSerial pipeTwitterApi = new PipeSerial(filterTwitterApi, pipeFilterNegative);
             * PipeSerial pipeFilterSaveImageOne = new PipeSerial(filterSaveImage, pipeTwitterApi);
             * PipeSerial pipeFilterGreyScale = new PipeSerial(filterGreyscale, pipeFilterSaveImageOne);
             * pipeFilterGreyScale.Send(pic);*/


            // Parte 4.

            /*
             * PipeNull pipeNull = new PipeNull();
             * PipeSerial pipeFilterSaveImageTwo = new PipeSerial(filterSaveImage, pipeNull);
             * PipeSerial pipeFilterNegative = new PipeSerial(filterNegative, pipeFilterSaveImageTwo);
             * PipeSerial pipeTwitterApi = new PipeSerial(filterTwitterApi, pipeNull);
             * PipeFork pipeConditionalFork = new PipeFork(pipeFilterNegative, pipeTwitterApi);
             * PipeSerial pipeFilterHasFace = new PipeSerial(filterHasFace, pipeConditionalFork);
             * PipeSerial pipeFilterSaveImageOne = new PipeSerial(filterSaveImage, pipeFilterHasFace);
             * PipeSerial pipeFilterGreyScale = new PipeSerial(filterGreyscale, pipeFilterSaveImageOne);
             * pipeFilterGreyScale.Send(pic);*/



            pic = p.GetPicture(@"Imagen2.jpg");

            //Filtro FilterBlackAndWhite
            PipeNull         pipeNull             = new PipeNull();
            FilterSaveImage2 filterSaveImage2     = new FilterSaveImage2();
            PipeSerial       pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterBlackAndWhite filterBAndW     = new FilterBlackAndWhite(20);
            PipeSerial          pipeFilterBAndW = new PipeSerial(filterBAndW, pipeFilterSaveImage2);

            pipeFilterBAndW.Send(pic.Clone());

            //Filtro FilterClearOut
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterClearOut filterClearOut     = new FilterClearOut();
            PipeSerial     pipeFilterClearOut = new PipeSerial(filterClearOut, pipeFilterSaveImage2);

            pipeFilterClearOut.Send(pic.Clone());

            //Filtro FilterColoredLines
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterColoredLines filterColoredLines     = new FilterColoredLines();
            PipeSerial         pipeFilterColoredLines = new PipeSerial(filterColoredLines, pipeFilterSaveImage2);

            pipeFilterColoredLines.Send(pic.Clone());


            //Filtro FilterDarken
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterDarken filterDarken     = new FilterDarken();
            PipeSerial   pipeFilterDarken = new PipeSerial(filterDarken, pipeFilterSaveImage2);

            pipeFilterDarken.Send(pic.Clone());

            //Filtro FilterNeon
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterNeon filterNeon     = new FilterNeon();
            PipeSerial pipeFilterNeon = new PipeSerial(filterNeon, pipeFilterSaveImage2);

            pipeFilterNeon.Send(pic.Clone());

            //Filtro FilterPencil
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterPencil filterPencil     = new FilterPencil();
            PipeSerial   pipeFilterPencil = new PipeSerial(filterPencil, pipeFilterSaveImage2);

            pipeFilterPencil.Send(pic.Clone());

            //Filtro FilterRelief
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterRelief filterRelief     = new FilterRelief();
            PipeSerial   pipeFilterRelief = new PipeSerial(filterRelief, pipeFilterSaveImage2);

            pipeFilterRelief.Send(pic.Clone());


            //Filtro FilterGreyScale
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterGreyscale filterGreyScale     = new FilterGreyscale();
            PipeSerial      pipeFilterGreyscale = new PipeSerial(filterGreyScale, pipeFilterSaveImage2);

            pipeFilterGreyscale.Send(pic.Clone());


            //Filtro BlurConvolution
            pipeNull             = new PipeNull();
            pipeFilterSaveImage2 = new PipeSerial(filterSaveImage2, pipeNull);

            FilterBlurConvolution filterBlurConvolution     = new FilterBlurConvolution();
            PipeSerial            pipeFilterBlurConvolution = new PipeSerial(filterBlurConvolution, pipeFilterSaveImage2);

            pipeFilterBlurConvolution.Send(pic.Clone());
        }
Пример #8
0
        static void Main(string[] args)
        {
            PictureProvider p   = new PictureProvider();
            IPicture        pic = p.GetPicture("../faceImage.jpg");

            IFilter filterGreyscale          = new FilterGreyscale();
            IFilter filterNegative           = new FilterNegative();
            IFilter filterProvider           = new FilterProvider();
            IFilter filterTwiter             = new FilterTwitter();
            IFilter filterConditional        = new FilterConditional();
            IFilter filterBlurConvolution    = new FilterBlurConvolution();
            IFilter filterSharpenConvolution = new FilterSharpenConvolution();

            //EJERCICIO 1

            IPipe pipeNull_ej1    = new PipeNull();
            IPipe pipeSerial2_ej1 = new PipeSerial(filterNegative, pipeNull_ej1);
            IPipe pipeSerial1_ej1 = new PipeSerial(filterGreyscale, pipeSerial2_ej1);

            pipeSerial1_ej1.Send(pic);

            //EJERCICIO 2

            IPipe pipeNull_ej2      = new PipeNull();
            IPipe pipeProvider2_ej2 = new PipeSerial(filterProvider, pipeNull_ej2);
            IPipe pipeSerial2_ej2   = new PipeSerial(filterNegative, pipeProvider2_ej2);
            IPipe pipeProvider1_ej2 = new PipeSerial(filterProvider, pipeSerial2_ej2);
            IPipe pipeSerial1_ej2   = new PipeSerial(filterGreyscale, pipeProvider1_ej2);

            pipeSerial1_ej2.Send(pic);


            //EJERCICIO 3

            IPipe pipeNull_ej3      = new PipeNull();
            IPipe pipeTwiter2_ej3   = new PipeSerial(filterTwiter, pipeNull_ej3);
            IPipe pipeProvider2_ej3 = new PipeSerial(filterProvider, pipeTwiter2_ej3);
            IPipe pipeSerial2_ej3   = new PipeSerial(filterNegative, pipeProvider2_ej3);
            IPipe pipeTwiter1_ej3   = new PipeSerial(filterTwiter, pipeSerial2_ej3);
            IPipe pipeProvider1_ej3 = new PipeSerial(filterProvider, pipeTwiter1_ej3);
            IPipe pipeSerial1_ej3   = new PipeSerial(filterGreyscale, pipeProvider1_ej3);

            pipeSerial1_ej3.Send(pic);


            //EJERCICIO 4

            IPipe pipeNull_ej4             = new PipeNull();
            IPipe pipeProvider2_ej4        = new PipeSerial(filterProvider, pipeNull_ej4);
            IPipe pipeSerial2_ej4          = new PipeSerial(filterNegative, pipeProvider2_ej4);
            IPipe pipeTwiter1_ej4          = new PipeSerial(filterTwiter, pipeNull_ej4);
            IPipe pipeConditionalFork1_ej4 = new PipeConditionalFork(filterConditional, pipeTwiter1_ej4, pipeSerial2_ej4);
            IPipe pipeProvider1_ej4        = new PipeSerial(filterProvider, pipeConditionalFork1_ej4);
            IPipe pipeSerial1_ej4          = new PipeSerial(filterGreyscale, pipeProvider1_ej4);

            pipeSerial1_ej4.Send(pic);


            //EJERCICIO BONUS

            IPipe pipeNull_ejB      = new PipeNull();
            IPipe pipeProvider2_ejB = new PipeSerial(filterProvider, pipeNull_ejB);
            IPipe pipeSerial2_ejB   = new PipeSerial(filterSharpenConvolution, pipeProvider2_ejB);
            IPipe pipeProvider1_ejB = new PipeSerial(filterProvider, pipeSerial2_ejB);
            IPipe pipeSerial1_ejB   = new PipeSerial(filterBlurConvolution, pipeProvider1_ejB);

            pipeSerial1_ejB.Send(pic);
        }
Пример #9
0
        static void Main(string[] args)
        {
            //Ejercicio1

            PictureProvider p          = new PictureProvider();
            IPicture        pic        = p.GetPicture("..\\Adds\\índice.jpg");
            IPipe           thirdpipe  = new PipeNull();
            IPipe           secondpipe = new PipeSerial(new FilterNegative(), thirdpipe);
            IPipe           firstpipe  = new PipeSerial(new FilterGreyscale(), secondpipe);

            p.SavePicture(firstpipe.Send(pic), "..\\Adds\\Ejercicio1.jpg");

            //Ejercicio2

            PictureProvider p1          = new PictureProvider();
            IPicture        pic1        = p1.GetPicture("..\\Adds\\índice.jpg");
            IPipe           fifthpipe1  = new PipeNull();
            IPipe           fourthpipe1 = new PipeSerial(new FilterSave(), fifthpipe1);
            IPipe           thirdpipe1  = new PipeSerial(new FilterNegative(), fourthpipe1);
            IPipe           secondpipe1 = new PipeSerial(new FilterSave(), thirdpipe1);
            IPipe           firstpipe1  = new PipeSerial(new FilterGreyscale(), secondpipe1);

            firstpipe1.Send(pic1);

            //Ejercicio3

            PictureProvider p2   = new PictureProvider();
            IPicture        pic2 = p2.GetPicture("..\\Adds\\índice.jpg");

            IPipe fifthpipe2 = new PipeNull();

            IPipe fourthpipe2 = new PipeSerial(new FilterTwitter(), fifthpipe2);

            IPipe thirdpipe2 = new PipeSerial(new FilterNegative(), fourthpipe2);

            IPipe secondpipe2 = new PipeSerial(new FilterTwitter(), thirdpipe2);

            IPipe firstpipe2 = new PipeSerial(new FilterGreyscale(), secondpipe2);

            firstpipe2.Send(pic2);


            //Ejercicio4

            PictureProvider p3   = new PictureProvider();
            PictureProvider p4   = new PictureProvider();
            IPicture        pic3 = p3.GetPicture("..\\Adds\\índice.jpg");
            IPicture        pic4 = p4.GetPicture("..\\Adds\\Auto.jpg");

            IPipe fifthpipe3 = new PipeNull();

            IPipe fourthpipe3 = new PipeSerial(new FilterNegative(), fifthpipe3);

            IPipe thirdpipe3 = new PipeSerial(new FilterTwitter(), fifthpipe3);

            IPipe secondpipe3 = new PipeConditionalFork(new FilterConditional(), thirdpipe3, fourthpipe3);

            IPipe firstpipe3 = new PipeSerial(new FilterGreyscale(), secondpipe3);

            firstpipe3.Send(pic3);
            p4.SavePicture(firstpipe.Send(pic4), "..\\Adds\\auto2.jpg");



            //Ejercicio5
            PictureProvider p5          = new PictureProvider();
            IPicture        pic5        = p5.GetPicture("..\\Adds\\índice.jpg");
            IPipe           secondpipe5 = new PipeNull();
            IPipe           firstpipe5  = new PipeSerial(new FilterRandomConvolution(), secondpipe5);

            p5.SavePicture(firstpipe5.Send(pic5), "..\\Adds\\Ejercicio5.jpg");
        }
Пример #10
0
        static void Main(string[] args)
        {
            string          Shrek     = @"..\..\SmilingShrek.jpg";
            string          NewShrek  = @"..\..\" + Guid.NewGuid().ToString() + ".jpg";
            string          NewShrek2 = @"..\..\" + Guid.NewGuid().ToString() + ".jpg";
            string          NewShrek3 = @"..\..\" + Guid.NewGuid().ToString() + ".jpg";
            string          NewShrek4 = @"..\..\" + Guid.NewGuid().ToString() + ".jpg";
            PictureProvider p         = new PictureProvider();
            IPicture        pic       = p.GetPicture(Shrek);

            // Conjunto de filtros a utilizar en las 5 partes
            IFilter               GrayFilter     = new FilterGreyscale();
            IFilter               NegativeFilter = new FilterNegative();
            IFilter               Save           = new FilterSaver(NewShrek);
            IFilter               Tweet1         = new FilterTwitterPublish("Shrek is love, Shrek is life.", NewShrek);
            IFilter               Tweet2         = new FilterTwitterPublish("Shrek is love, Shrek is life.", NewShrek2);
            IFilter               Tweet3         = new FilterTwitterPublish("Shrek is love, Shrek is life.", NewShrek3);
            IFilter               Tweet4         = new FilterTwitterPublish("Shrek is love, Shrek is life.", NewShrek4);
            IConditionFilter      FaceCondition  = new FilterSearchFace(Shrek);
            FilterBlurConvolution LightBlur      = new FilterBlurConvolution();

            //PipeNull
            IPipe NullPipe = new PipeNull();

            // Parte1
            PipeSerial pipe2 = new PipeSerial(NegativeFilter, NullPipe);
            IPipe      pipe1 = new PipeSerial(GrayFilter, pipe2);

            pipe1.Send(pic);

            // Parte 2 (guardar una copia de la imagen cada vez que se le aplica un filtro)
            IPipe FourthPipe2 = new PipeSerial(Save, NullPipe);
            IPipe ThirdPipe2  = new PipeSerial(NegativeFilter, FourthPipe2);
            IPipe SecondPipe2 = new PipeSerial(Save, ThirdPipe2);

            IPipe InitialPipe2 = new PipeSerial(GrayFilter, SecondPipe2);

            InitialPipe2.Send(pic);

            // Parte 3
            IPipe FifthPipe3  = new PipeSerial(Tweet2, NullPipe);
            IPipe FourthPipe3 = new PipeSerial(Save, FifthPipe3);
            IPipe ThirdPipe3  = new PipeSerial(NegativeFilter, FourthPipe3);
            IPipe SecondPipe3 = new PipeSerial(Save, ThirdPipe3);

            IPipe InitialPipe3 = new PipeSerial(GrayFilter, SecondPipe3);

            InitialPipe3.Send(pic);

            // Parte 4
            IPipe SerialTweet4 = new PipeSerial(Tweet3, NullPipe);
            IPipe SerialSave   = new PipeSerial(Save, NullPipe);
            IPipe PipeFork4    = new PipeFork(SerialTweet4, SerialSave, FaceCondition.condition);

            IPipe InitialPipe4 = new PipeSerial(GrayFilter, PipeFork4);

            InitialPipe4.Send(pic);

            // Parte 5
            IPipe ThirdPipe5  = new PipeSerial(Tweet4, NullPipe);
            IPipe SecondPipe5 = new PipeSerial(Save, ThirdPipe5);

            IPipe InitialPipe5 = new PipeSerial(LightBlur, SecondPipe5);

            InitialPipe5.Send(pic);
        }
Пример #11
0
        static void Main(string[] args)
        {
            IFilter         Greyscale = new FilterGreyscale();
            IFilter         Negative  = new FilterNegative();
            IFilter         Twitter   = new FilterTwitter();
            IFilter         Save      = new FilterSave();
            IFilter         Sharpen   = new FilterSharpenConvolution();
            IFilterBool     HasFace   = new FilterFace();
            PictureProvider p         = new PictureProvider();
            IPicture        pic       = p.GetPicture("..\\Images\\image.jpg");

            /// <summary>
            /// Las clases Pipe que aplican algún filtro a la imagen delegan la responsabilidad de modificar
            /// la imagen a la clase Filter que la compone.
            /// </summary>
            /// <returns></returns>

            #region Ejercicio 1

            IPipe Pipe1_3 = new PipeNull();
            IPipe Pipe1_2 = new PipeSerial(Negative, Pipe1_3);
            IPipe Pipe1_1 = new PipeSerial(Greyscale, Pipe1_2);
            Pipe1_1.Send(pic);

            #endregion

            #region Ejercicio 2

            IPipe Pipe2_5 = new PipeNull();
            IPipe Pipe2_4 = new PipeSerial(Save, Pipe2_5);
            IPipe Pipe2_3 = new PipeSerial(Negative, Pipe2_4);
            IPipe Pipe2_2 = new PipeSerial(Save, Pipe2_3);
            IPipe Pipe2_1 = new PipeSerial(Greyscale, Pipe2_2);
            Pipe2_1.Send(pic);

            #endregion

            #region Ejercicio 3

            IPipe Pipe3_5 = new PipeNull();
            IPipe Pipe3_4 = new PipeSerial(Twitter, Pipe2_5);
            IPipe Pipe3_3 = new PipeSerial(Negative, Pipe2_4);
            IPipe Pipe3_2 = new PipeSerial(Twitter, Pipe2_3);
            IPipe Pipe3_1 = new PipeSerial(Greyscale, Pipe2_2);
            Pipe3_1.Send(pic);

            #endregion

            #region Ejercicio 4

            IPipe Pipe4_5 = new PipeNull();
            IPipe Pipe4_4 = new PipeSerial(Negative, Pipe4_5);
            IPipe Pipe4_3 = new PipeSerial(Twitter, Pipe4_5);
            IPipe Pipe4_2 = new PipeConditionalFork(Pipe4_3, Pipe4_4, HasFace);
            IPipe Pipe4_1 = new PipeSerial(Greyscale, Pipe4_2);
            Pipe4_1.Send(pic);

            #endregion

            #region Ejercicio Bonus

            IPipe PipeBonus_3 = new PipeNull();
            IPipe PipeBonus_2 = new PipeSerial(Save, PipeBonus_3);
            IPipe PipeBonus_1 = new PipeSerial(Sharpen, PipeBonus_2);
            PipeBonus_1.Send(pic);

            #endregion
        }