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); }
/** * 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)); }
/** * 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; }