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 ImageManipulator(Bitmap bitmap, ImageManipulatorType.Name filter, ThreadHandler thHandler, int[] values = null) { this.bitmap = bitmap; this.filter = filter; this.thHandler = thHandler; this.values = values; }
public ThreadHandler(int threads) { this.threads = threads; alive = new ArrayList(threads); this.startTime(); _object = this; }
public void filter(ImageManipulatorType.Name name) { PixelState.getInstance().add(new ImageObject(pic.Image, name)); ThreadHandler thHandler = new ThreadHandler(threads); new ImageManipulator((Bitmap)pic.Image, name, thHandler).perform(); this.show_picture(thHandler); }
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 filter_Sample_Board(int count) { PixelState state = PixelState.getInstance(); state.add(new ImageObject(pic.Image, ImageManipulatorType.Name.SAMPLE_BOARD)); ThreadHandler thHandler = new ThreadHandler(threads); int[] colors = new int[1] { count }; new ImageManipulator((Bitmap)pic.Image, ImageManipulatorType.Name.SAMPLE_BOARD, thHandler, colors).perform(); this.show_picture(thHandler); }
public void ImageManipulatorConstructorTest() { Bitmap bitmap = new Bitmap(10, 10); ImageManipulatorType.Name filter = ImageManipulatorType.Name.GRAYSCALE; // TODO: Passenden Wert initialisieren int threads = 2; // TODO: Passenden Wert initialisieren ThreadHandler thHandler = new ThreadHandler(threads); ImageManipulator t = new ImageManipulator(bitmap, filter, thHandler); // TODO: Passenden Wert initialisieren PrivateObject param0 = new PrivateObject(t); // TODO: Passenden Wert initialisieren ImageManipulator_Accessor target = new ImageManipulator_Accessor(param0); Assert.IsNotNull( target.bitmap); Assert.IsNotNull(target.thHandler); Assert.IsNotNull(target.filter); }
public void computeHeightStepsTest() { Bitmap bitmap = new Bitmap(10, 10); ImageManipulatorType.Name filter = ImageManipulatorType.Name.GRAYSCALE; // TODO: Passenden Wert initialisieren int threads = 2; // TODO: Passenden Wert initialisieren ThreadHandler thHandler = new ThreadHandler(threads); ImageManipulator t = new ImageManipulator(bitmap, filter, thHandler); // TODO: Passenden Wert initialisieren PrivateObject param0 = new PrivateObject(t); // TODO: Passenden Wert initialisieren ImageManipulator_Accessor target = new ImageManipulator_Accessor(param0); int height = 10; // TODO: Passenden Wert initialisieren int expected = 5; // TODO: Passenden Wert initialisieren int actual; actual = target.computeHeightSteps(height); Assert.AreEqual(expected, actual); }
public Manipulate(Bitmap b, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thInfo, int[] values = null) { this.bitmap = b; this.Scan0 = Scan0; this.stride = stride; this.height_start = height_start; this.height_end = height_end; this.thInfo = thInfo; this.values = values; lock (_locker) { this.bitmap_height = b.Height; this.bitmap_width = b.Width; } nOffset = stride - (bitmap_width * (int)Config.value.BITMAP_OFFSET_MULTIPLIKATOR); }
public override Manipulate create(ImageManipulatorType.Name name, Bitmap bitmap, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thHandler, int[] values) { switch (name) { case ImageManipulatorType.Name.INVERT: return new InvertFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values); case ImageManipulatorType.Name.OSCILLATION: return new OscillationFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values); case ImageManipulatorType.Name.GRAYSCALE: return new GrayscaleFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values); case ImageManipulatorType.Name.BLACKWHITE: return new BlackWhiteFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values); case ImageManipulatorType.Name.ERROR_DIFFUSION: return new ErrorDiffusionFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values); case ImageManipulatorType.Name.SEPIA: return new SepiaFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values); case ImageManipulatorType.Name.SAMPLE_BOARD: return new SampleBoardFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values); case ImageManipulatorType.Name.RGB_RED: return new RGB_ModeFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, ImageManipulatorType.Name.RGB_RED); case ImageManipulatorType.Name.RGB_GREEN: return new RGB_ModeFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, ImageManipulatorType.Name.RGB_GREEN); case ImageManipulatorType.Name.RGB_BLUE: return new RGB_ModeFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, ImageManipulatorType.Name.RGB_BLUE); } throw (new FilterUndefinedException("Selected filter is not defined in FilterFactory class!")); }
public ErrorDiffusionFilter(Bitmap b, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thInfo, int[] values) : base(b, Scan0, stride,height_start, height_end, thInfo) { }
public ImageManipulater(Bitmap b, ImageManipulaterType.Name filter, ThreadHandler thHandler) { this.b = b; this.filter = filter; this.thHandler = thHandler; }
public RGB_Mode(Bitmap b, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thInfo, ImageManipulatorType.Name color_type) : base(b, Scan0, stride, height_start, height_end, thInfo) { this.color_type = color_type; }
public SepiaFilter(Bitmap b, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thInfo, int[] values) : base(b, Scan0, stride, height_start, height_end, thInfo) { }
public InvertFilter(Bitmap b, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thInfo) : base(b, Scan0, stride,height_start, height_end, thInfo) { }
public RGB_ModeFilter(Bitmap b, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thInfo, ImageManipulatorType.Name color_type) : base(b, Scan0, stride,height_start, height_end, thInfo) { this.color_type = color_type; }
public void filter_Sample_Board( int count ) { PixelState state = PixelState.getInstance(); state.add(new ImageObject(pic.Image, ImageManipulatorType.Name.SAMPLE_BOARD)); ThreadHandler thHandler = new ThreadHandler(threads); int[] colors = new int[1] { count }; new ImageManipulator((Bitmap)pic.Image, ImageManipulatorType.Name.SAMPLE_BOARD, thHandler, colors).perform(); this.show_picture(thHandler); }
private void show_picture(ThreadHandler thHandler) { thHandler.refresh(pic); mainForm.setInfoBox(threads, thHandler.getTime()); }
/* public Manipulate perform(ImageManipulatorType.Name name, Bitmap bitmap, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thHandler, int[] values) { return create(name, bitmap, Scan0, stride, height_start, height_end, thHandler, values); } */ public abstract Manipulate create(ImageManipulatorType.Name name, Bitmap bitmap, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thHandler, int[] values);
public SampleBoardFilter(Bitmap b, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thInfo, int[] values) : base(b, Scan0, stride,height_start, height_end, thInfo, values) { }
/* * public Manipulate perform(ImageManipulatorType.Name name, Bitmap bitmap, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thHandler, int[] values) * { * * return create(name, bitmap, Scan0, stride, height_start, height_end, thHandler, values); * } */ public abstract Manipulate create(ImageManipulatorType.Name name, Bitmap bitmap, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thHandler, int[] values);
public void performTest1() { Bitmap bitmap = new Bitmap(100, 100); ImageManipulatorType.Name filter = ImageManipulatorType.Name.GRAYSCALE; // TODO: Passenden Wert initialisieren int threads = 2; // TODO: Passenden Wert initialisieren ThreadHandler thHandler = new ThreadHandler(threads); ImageManipulator t = new ImageManipulator(bitmap, filter, thHandler); // TODO: Passenden Wert initialisieren PrivateObject param0 = new PrivateObject(t); // TODO: Passenden Wert initialisieren ImageManipulator_Accessor target = new ImageManipulator_Accessor(param0); BitmapData bmData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); int stride = bmData.Stride; int bytes = Math.Abs(bmData.Stride) * bmData.Height; System.IntPtr Scan0 = bmData.Scan0; target.perform(Scan0, stride); // Die Funktion stößt nur andere Funktionen ab hier an. Was testen? bitmap.UnlockBits(bmData); }
public void performTest() { Bitmap bitmap = new Bitmap(10, 10); ImageManipulatorType.Name filter = ImageManipulatorType.Name.GRAYSCALE; // TODO: Passenden Wert initialisieren int threads = 2; // TODO: Passenden Wert initialisieren ThreadHandler thHandler = new ThreadHandler(threads); ImageManipulator target = new ImageManipulator(bitmap, filter, thHandler); // TODO: Passenden Wert initialisieren bool expected = true; // TODO: Passenden Wert initialisieren bool actual = target.perform(); Assert.AreEqual(expected, actual); }
public InvertFilter(Bitmap b, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thInfo) : base(b, Scan0, stride, height_start, height_end, thInfo) { }
public override Manipulate create(ImageManipulatorType.Name name, Bitmap bitmap, System.IntPtr Scan0, int stride, int height_start, int height_end, ThreadHandler thHandler, int[] values) { switch (name) { case ImageManipulatorType.Name.INVERT: return(new InvertFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values)); case ImageManipulatorType.Name.OSCILLATION: return(new OscillationFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values)); case ImageManipulatorType.Name.GRAYSCALE: return(new GrayscaleFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values)); case ImageManipulatorType.Name.BLACKWHITE: return(new BlackWhiteFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values)); case ImageManipulatorType.Name.ERROR_DIFFUSION: return(new ErrorDiffusionFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values)); case ImageManipulatorType.Name.SEPIA: return(new SepiaFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values)); case ImageManipulatorType.Name.SAMPLE_BOARD: return(new SampleBoardFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, values)); case ImageManipulatorType.Name.RGB_RED: return(new RGB_ModeFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, ImageManipulatorType.Name.RGB_RED)); case ImageManipulatorType.Name.RGB_GREEN: return(new RGB_ModeFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, ImageManipulatorType.Name.RGB_GREEN)); case ImageManipulatorType.Name.RGB_BLUE: return(new RGB_ModeFilter(bitmap, Scan0, stride, height_start, height_end, thHandler, ImageManipulatorType.Name.RGB_BLUE)); } throw (new FilterUndefinedException("Selected filter is not defined in FilterFactory class!")); }