public void applyColorFilter(int red, int green, int blue) { Bitmap image; if (imageModel.getFilteredImage() != null) { image = imageModel.getFilteredImage(); } else { image = imageModel.getBaseImage(); } this.undoBuffer.push(image); if (FilterController.Color(image, red, green, blue)) { imageModel.setFilteredImage(image); baseView.setBaseImageFromBitmap(image); imageModel.setCIEImage(setCIEImage(image)); RGBModel[,] rgbImage = convertToRGB(imageModel.getCIEImage()); histogramView.setBaseImage(imageModel.getFilteredImage()); if (red != 0 && green == 0 && blue == 0) { channelView.setRedChannel(image, setRedChannel(rgbImage)); } else if (green != 0 && red == 0 && blue == 0) { channelView.setGreenChannel(image, setGreenChannel(rgbImage)); } else if (blue != 0 && red == 0 && green == 0) { channelView.setBlueChannel(image, setBlueChannel(rgbImage)); } else { channelView.setFilteredChannelImages(image, setRedChannel(rgbImage), setGreenChannel(rgbImage), setBlueChannel(rgbImage)); } } else { throw new Exception(); } this.redoBuffer.clearBuffer(); }