public void remove_lastTest()
        {
            PixelState target = PixelState.getInstance();
            Bitmap     b      = new Bitmap(10, 10);
            Image      img    = (Image)b;

            ImageObject imgObj1 = new ImageObject(img, ImageManipulatorType.Name.INVERT);
            ImageObject imgObj2 = new ImageObject(img, ImageManipulatorType.Name.GRAYSCALE);
            ImageObject imgObj3 = new ImageObject(img, ImageManipulatorType.Name.RGB_RED);

            target.reset();
            target.add(imgObj3);
            target.add(imgObj2);
            target.add(imgObj1);

            I_ImageObject img_last = target.remove_last();

            Assert.AreEqual(img_last.get_ImageManipulatorType(), imgObj1.get_ImageManipulatorType());


            img_last = target.remove_last();
            Assert.AreEqual(img_last.get_ImageManipulatorType(), imgObj2.get_ImageManipulatorType());

            img_last = target.remove_last();
            Assert.AreEqual(img_last.get_ImageManipulatorType(), imgObj3.get_ImageManipulatorType());

            img_last = target.remove_last();
            Assert.IsNotNull(img_last);
        }
        public void filter_RGB_Mode(ImageManipulatorType.Name color)
        {
            // letztes zwischengespeichertes Bild holen
            PixelState    state  = PixelState.getInstance();
            I_ImageObject imgObj = state.get_last();
            // Vergleichsliste mit RGB Klassen Typen erstellen
            List <ImageManipulatorType.Name> container = new List <ImageManipulatorType.Name>();

            container.Add(ImageManipulatorType.Name.RGB_BLUE);
            container.Add(ImageManipulatorType.Name.RGB_RED);
            container.Add(ImageManipulatorType.Name.RGB_GREEN);

            // wenn das letzte zwischengespeicherte Bild mit dieser funktion verändert wurde
            if (container.Contains(imgObj.get_ImageManipulatorType()))
            {
                /* dann diese Veränderung rückgängig machen, da ansonsten das Bild schwarz wird.
                 * 2 aufeinander folgende Kanal filter => schwarzes bild, da jeweils 2 Farbkanäle
                 * pro Funktions aufruf auf 0 gesetzt werden. Nach 2 Funktionsaufrufen sind also
                 * alle Kanäle 0 was schwarzes Bild ergibt.
                 */
                this.undo();
            }

            state.add(new ImageObject(pic.Image, color));

            ThreadHandler thHandler = new ThreadHandler(threads);

            new ImageManipulator((Bitmap)pic.Image, color, thHandler).perform();
            this.show_picture(thHandler);
        }
        public void addTest()
        {
            PixelState  target = PixelState.getInstance();
            Bitmap      b      = new Bitmap(10, 10);
            Image       img    = (Image)b;
            ImageObject imgObj = new ImageObject(img, ImageManipulatorType.Name.GRAYSCALE);

            I_ImageObject imgObj2 = target.get_last();

            Assert.IsNotNull(imgObj2);
            target.add(imgObj);

            imgObj2 = target.get_last();

            Assert.IsInstanceOfType(imgObj2, typeof(I_ImageObject));
            Assert.IsNotNull(imgObj2);
        }
Exemple #4
0
        /**
         * Liefert das letzte Element des PixelState containers zurück und entfernt dieses
         * aus dem container.Wenn container leer, dann wird null zurückgegeben.
         *
         */
        public I_ImageObject remove_last()
        {
            // wenn min. 1 element im container
            if (container.Count != 0)
            {
                if (container[container.Count - 1] != null)
                {       //letztes element zurückgeben
                    I_ImageObject imgObj = container[container.Count - 1];
                    //Bitmap img = (Bitmap)container[0];
                    // element aus container löschen
                    container.RemoveAt(container.Count - 1);
                    return(imgObj);
                }
            }


            return(new NullImageObject(pic));
        }
Exemple #5
0
        /**
         * Fügt dem PixelState Container ein neues Bild hinzu. Ist der Container voll,
         * dann wird das älteste Element entfernt und das neue hinten angefügt.
         */
        public bool add(I_ImageObject imgObj)
        {
            Bitmap     img    = imgObj.get_Bitmap();
            BitmapData bmData = img.LockBits(new Rectangle(0, 0, img.Width, img.Height),
                                             ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

            Image clone = (Bitmap)img.Clone();

            img.UnlockBits(bmData);

            // wenn maximale Grenze des containers noch nicht erreicht
            if (container.Count <= (int)Config.value.PIXEL_STATE_CONTAINER_AMOUNT)
            {
                // Element hinten anfügen
                container.Add(new ImageObject(clone, imgObj.get_ImageManipulatorType()));
                return(true);
            }
            // ältestes Element löschen und neues "oben reinpacken"
            container.RemoveAt(0);
            container.Add(new ImageObject(clone, imgObj.get_ImageManipulatorType()));
            return(false);
        }
        /**
         * Fügt dem PixelState Container ein neues Bild hinzu. Ist der Container voll,
         * dann wird das älteste Element entfernt und das neue hinten angefügt.
         */
        public bool add( I_ImageObject imgObj  )
        {
            Bitmap img = imgObj.get_Bitmap();
            BitmapData bmData = img.LockBits(new Rectangle(0, 0, img.Width, img.Height),
            ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

            Image clone = (Bitmap)img.Clone();

            img.UnlockBits(bmData);

                // wenn maximale Grenze des containers noch nicht erreicht
            if (container.Count <= (int)Config.value.PIXEL_STATE_CONTAINER_AMOUNT)
            {

                    // Element hinten anfügen
                container.Add(new ImageObject(clone, imgObj.get_ImageManipulatorType()));
                return true;
            }
                // ältestes Element löschen und neues "oben reinpacken"
            container.RemoveAt(0);
            container.Add(new ImageObject(clone, imgObj.get_ImageManipulatorType()));
            return false;
        }