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 ImageManipulator(Bitmap bitmap, ImageManipulatorType.Name filter, ThreadHandler thHandler, int[] values = null ) { this.bitmap = bitmap; this.filter = filter; this.thHandler = thHandler; this.values = values; }
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 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 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 ImageObject(Image img, ImageManipulatorType.Name manipulator) { // TODO: Complete member initialization this.img = img; this.manipulator = manipulator; }