/// <summary> /// iView.NET subroutine. Processes the main display image with the specified processing type. /// </summary> /// <param name="iProcessingType">Specifies the IProcessingType interface </param> /// <returns></returns> private SResult SubApplyImageProcessing(IProcessingType iProcessingType) { if (!imgbx_MainImage.IsImageLoaded) return SResult.NullDisplayImage; // Show image processing visuals. Cursor.Current = Cursors.WaitCursor; // Process the image in the main imagebox. using (ImageProcessing oImageProcess = new ImageProcessing(imgbx_MainImage.ImageBoxImage)) { switch (iProcessingType.StructType) { case ProcessingStructType.GreyScaleFilter: oImageProcess.ApplyGreyScaleFilter(); break; case ProcessingStructType.InvertFilter: oImageProcess.ApplyInvertFilter(); break; case ProcessingStructType.PhotoCopyFilter: oImageProcess.ApplyPhotoCopyFilter(); break; case ProcessingStructType.RotateColourFilter: oImageProcess.ApplyRotateColourFilter(); break; case ProcessingStructType.ColourFilter: ColourFilterStruct ColourStruct = (ColourFilterStruct)iProcessingType; oImageProcess.ApplyColourFilter(ColourStruct.Channel, ColourStruct.Value); break; case ProcessingStructType.Transparency: TransparencyStruct TransStruct = (TransparencyStruct)iProcessingType; oImageProcess.AdjustTransparency(TransStruct.Value, 255); break; case ProcessingStructType.Brightness: BrightnessStruct BrightStruct = (BrightnessStruct)iProcessingType; oImageProcess.AdjustBrightness(BrightStruct.Value); break; case ProcessingStructType.Contrast: ContrastStruct ContStruct = (ContrastStruct)iProcessingType; oImageProcess.AdjustContrast(ContStruct.Value); break; case ProcessingStructType.Gamma: GammaStruct GammStruct = (GammaStruct)iProcessingType; oImageProcess.AdjustGamma(GammStruct.Red, GammStruct.Green, GammStruct.Blue); break; } // Update the image edited status. ImageHasBeenEdited = true; // No elements in the list? Save the original state first. if (m_oUndoRedo.Count == 0) m_oUndoRedo.Add(imgbx_MainImage.ImageBoxImage); // Update the main imagebox with the processed image. imgbx_MainImage.ImageBoxImage = oImageProcess.GetProcessedImage(); // Save the current image state. m_oUndoRedo.Add(imgbx_MainImage.ImageBoxImage); // Reset the cursor. Cursor.Current = Cursors.Default; } return SResult.Completed; }