001    /*
002     * OperationProcessor
003     * 
004     * Copyright (c) 2000, 2001, 2002, 2003, 2004 Marco Schmidt.
005     * All rights reserved.
006     */
007    
008    package net.sourceforge.jiu.apps;
009    
010    import net.sourceforge.jiu.data.BilevelImage;
011    import net.sourceforge.jiu.data.Gray16Image;
012    import net.sourceforge.jiu.data.Gray8Image;
013    import net.sourceforge.jiu.data.Paletted8Image;
014    import net.sourceforge.jiu.data.PixelImage;
015    import net.sourceforge.jiu.data.RGB24Image;
016    import net.sourceforge.jiu.data.RGB48Image;
017    
018    /**
019     * Abstract base class for performing JIU operations in combination
020     * with an {@link EditorState}.
021     * @author Marco Schmidt
022     */
023    public abstract class OperationProcessor implements MenuIndexConstants
024    {
025            private EditorState state;
026    
027            /**
028             * Create an object of this class, storing the state argument for later use.
029             * @param editorState EditorState object to be used for processing
030             */
031            public OperationProcessor(EditorState editorState)
032            {
033                    state = editorState;
034            }
035    
036            /**
037             * Adjust the brightness of the current image.
038             */
039            public abstract void colorAdjustBrightness();
040    
041            /**
042             * Adjust the contrast of the current image.
043             */
044            public abstract void colorAdjustContrast();
045    
046            /**
047             * Adjust the gamma value of the current image.
048             */
049            public abstract void colorAdjustGamma();
050    
051            /**
052             * Adjust hue, saturation and value of the current image.
053             */
054            public abstract void colorAdjustHueSaturationValue();
055    
056            /**
057             * Count the number of colors used in the current image.
058             */
059            public abstract void colorHistogramCountColorsUsed();
060    
061            public abstract void colorHistogramEqualize();
062    
063            public abstract void colorHistogramNormalize();
064    
065            public abstract void colorHistogramTextureProperties();
066    
067            public abstract void colorHistogramSaveHistogramAs();
068    
069            public abstract void colorHistogramSaveCoOccurrenceMatrixAs();
070    
071            public abstract void colorHistogramSaveCoOccurrenceFrequencyMatrixAs();
072    
073            public abstract void colorPaletteSaveAs();
074    
075            public abstract void colorPromotePromoteToPaletted();
076    
077            public abstract void colorPromotePromoteToGray8();
078    
079            public abstract void colorPromotePromoteToGray16();
080    
081            public abstract void colorPromotePromoteToRgb24();
082    
083            public abstract void colorPromotePromoteToRgb48();
084    
085            public abstract void colorReduceReduceNumberOfShadesOfGray();
086    
087            public abstract void colorReduceConvertToGrayscale();
088    
089            public abstract void colorReduceMedianCut();
090    
091            public abstract void colorReduceOctree();
092    
093            public abstract void colorReduceReduceToBilevelThreshold();
094    
095            public abstract void colorReduceUniformPalette();
096    
097            public abstract void colorReduceMapToArbitraryPalette();
098    
099            public abstract void colorConvertToMinimumColorType();
100    
101            public abstract void colorInvert();
102    
103            public abstract void editRedo();
104    
105            public abstract void editUndo();
106    
107            public abstract void filtersBlur();
108    
109            public abstract void filtersSharpen();
110    
111            public abstract void filtersEdgeDetection();
112    
113            public abstract void filtersEmboss();
114    
115            public abstract void filtersPsychedelicDistillation();
116    
117            public abstract void filtersLithograph();
118    
119            public abstract void filtersHorizontalSobel();
120    
121            public abstract void filtersVerticalSobel();
122    
123            public abstract void filtersHorizontalPrewitt();
124    
125            public abstract void filtersVerticalPrewitt();
126    
127            public abstract void filtersMaximum();
128    
129            public abstract void filtersMedian();
130    
131            public abstract void filtersMean();
132    
133            public abstract void filtersMinimum();
134    
135            public abstract void filtersOil();
136    
137            public abstract void transformationsFlip();
138    
139            public abstract void transformationsMirror();
140    
141            public abstract void transformationsRotate90Left();
142    
143            public abstract void transformationsRotate90Right();
144    
145            public abstract void transformationsRotate180();
146    
147            public abstract void transformationsCrop();
148    
149            public abstract void transformationsShear();
150    
151            public abstract void transformationsScale();
152    
153            public abstract void viewInterpolationTypeBicubic();
154    
155            public abstract void viewInterpolationTypeBilinear();
156    
157            public abstract void viewInterpolationTypeNearestNeighbor();
158    
159            public abstract void viewZoomIn();
160    
161            public abstract void viewZoomOut();
162    
163            public abstract void viewSetOriginalSize();
164    
165    
166            /**
167             * If there is an image loaded in the application, remove the image.
168             */
169            public abstract void fileClose();
170    
171            /**
172             * Terminate the application.
173             * If changes were not saved, the user should be asked whether these changes 
174             * should be discarded.
175             */
176            public abstract void fileExit();
177    
178            /**
179             * Load an image in the application.
180             */
181            public abstract void fileOpen();
182    
183            /**
184             * Save the current image as a Windows BMP file.
185             */
186            public abstract void fileSaveAsBmp();
187    
188            /**
189             * Save the current image as a GIF file.
190             */
191            public abstract void fileSaveAsGif();
192    
193            /**
194             * Save the current image as a Palm image file.
195             */
196            public abstract void fileSaveAsPalm();
197    
198            /**
199             * Save the current image as a Portable Bitmap file.
200             */
201            public abstract void fileSaveAsPbm();
202    
203            /**
204             * Save the current image as a Portable Graymap file.
205             */
206            public abstract void fileSaveAsPgm();
207    
208            /**
209             * Save the current image as a Portable Network Graphics file.
210             */
211            public abstract void fileSaveAsPng();
212    
213            /**
214             * Save the current image as a Portable Pixmap file.
215             */
216            public abstract void fileSaveAsPpm();
217    
218            /**
219             * Save the current image as a Sun Raster file.
220             */
221            public abstract void fileSaveAsRas();
222    
223            /**
224             * Returns the EditorState object given to this object's constructor.
225             * @return EditorState object used by this processor
226             */
227            public EditorState getEditorState()
228            {
229                    return state;
230            }
231    
232            /**
233             * Display information about the application:
234             * name, version, feedback email address, website.
235             */
236            public abstract void helpAbout();
237    
238            /**
239             * Display information on the system this application
240             * is currently running on.
241             */
242            public abstract void helpSystemInformation();
243    
244            /**
245             * Returns if the operation given by the menu index (from {@link MenuIndexConstants}
246             * is available regarding the current editor state.
247             * This method is used to update the enabled status of menu items so that
248             * they reflect what can be done in the current state of an application.
249             * Thus, things that cannot be done cannot be chosen in the menu
250             * because they are disabled.
251             * Example: the File | Save as... items are disabled as long as there is no image loaded,
252             * simply because there is nothing to save.
253             * @param menuIndex index of menu item to be checked
254             * @return whether the operation is available (if true, menu item
255             *  should be enabled)
256             */
257            public boolean isAvailable(int menuIndex)
258            {
259                    boolean hasImage = state.hasImage();
260                    PixelImage image = state.getImage();
261                    boolean bilevel = hasImage && image instanceof BilevelImage;
262                    boolean gray8 = hasImage && image instanceof Gray8Image;
263                    boolean gray16 = hasImage && image instanceof Gray16Image;
264                    boolean gray = gray8 || gray16;
265                    boolean pal8 = hasImage && image instanceof Paletted8Image;
266                    boolean rgb24 = hasImage && image instanceof RGB24Image;
267                    boolean rgb48 = hasImage && image instanceof RGB48Image;
268                    boolean rgb = rgb24 || rgb48;
269                    switch(menuIndex)
270                    {
271                            case(FILE):
272                            {
273                                    return true;
274                            }
275                            case(FILE_OPEN):
276                            {
277                                    return true;
278                            }
279                            case(FILE_CLOSE):
280                            {
281                                    return hasImage;
282                            }
283                            case(FILE_SAVEAS):
284                            {
285                                    return hasImage;
286                            }
287                            case(FILE_SAVEAS_GIF):
288                            {
289                                    return bilevel || gray8 || pal8;
290                            }
291                            case(FILE_SAVEAS_PALM):
292                            {
293                                    return bilevel || gray8 || pal8 || rgb24;
294                            }
295                            case(FILE_SAVEAS_PBM):
296                            {
297                                    return bilevel;
298                            }
299                            case(FILE_SAVEAS_PGM):
300                            {
301                                    return gray8 || gray16;
302                            }
303                            case(FILE_SAVEAS_PNG):
304                            {
305                                    return hasImage;
306                            }
307                            case(FILE_SAVEAS_PPM):
308                            {
309                                    return rgb24 || rgb48;
310                            }
311                            case(FILE_SAVEAS_SUNRASTER):
312                            {
313                                    return pal8;
314                            }
315                            case(FILE_SAVEAS_WINDOWSBMP):
316                            {
317                                    return bilevel || gray8 || pal8 || rgb24;
318                            }
319                            case(FILE_EXIT):
320                            {
321                                    return true;
322                            }
323                            case(EDIT):
324                            {
325                                    return state.canUndo() || state.canRedo();
326                            }
327                            case(EDIT_UNDO):
328                            {
329                                    return state.canUndo();
330                            }
331                            case(EDIT_REDO):
332                            {
333                                    return state.canRedo();
334                            }
335                            case(COLOR):
336                            {
337                                    return hasImage;
338                            }
339                            case(COLOR_ADJUST):
340                            {
341                                    return !bilevel;
342                            }
343                            case(COLOR_ADJUST_BRIGHTNESS):
344                            {
345                                    return gray8 || gray16 || pal8 || rgb24 || rgb48;
346                            }
347                            case(COLOR_ADJUST_CONTRAST):
348                            {
349                                    return gray8 || gray16 || pal8 || rgb24 || rgb48;
350                            }
351                            case(COLOR_ADJUST_GAMMA):
352                            {
353                                    return gray8 || gray16 || pal8 || rgb24 || rgb48;
354                            }
355                            case(COLOR_HISTOGRAM):
356                            {
357                                    return hasImage;
358                            }
359                            case(COLOR_HISTOGRAM_COUNTCOLORSUSED):
360                            {
361                                    return hasImage;
362                            }
363                            case(COLOR_HISTOGRAM_EQUALIZE):
364                            {
365                                    return gray8 || pal8 || rgb24 || rgb48;
366                            }
367                            case(COLOR_HISTOGRAM_NORMALIZE):
368                            {
369                                    return gray8 || pal8 || rgb24 || rgb48;
370                            }
371                            case(COLOR_HISTOGRAM_TEXTUREPROPERTIES):
372                            {
373                                    return gray8;
374                            }
375                            case(COLOR_HISTOGRAM_SAVEHISTOGRAMAS):
376                            {
377                                    return hasImage;
378                            }
379                            case(COLOR_HISTOGRAM_SAVECOOCCURRENCEMATRIXAS):
380                            {
381                                    return pal8 || gray8 || bilevel; 
382                            }
383                            case(COLOR_HISTOGRAM_SAVECOOCCURRENCEFREQUENCYMATRIXAS):
384                            {
385                                    return pal8 || gray8 || bilevel;
386                            }
387                            case(COLOR_PALETTE):
388                            {
389                                    return pal8;
390                            }
391                            case(COLOR_PALETTE_SAVEAS):
392                            {
393                                    return pal8;
394                            }
395                            case(COLOR_PROMOTE):
396                            {
397                                    return !rgb48;
398                            }
399                            case(COLOR_PROMOTE_PROMOTETOGRAY8):
400                            {
401                                    return bilevel;
402                            }
403                            case(COLOR_PROMOTE_PROMOTETOGRAY16):
404                            {
405                                    return bilevel || gray8;
406                            }
407                            case(COLOR_PROMOTE_PROMOTETORGB24):
408                            {
409                                    return bilevel || gray8 || pal8;
410                            }
411                            case(COLOR_PROMOTE_PROMOTETORGB48):
412                            {
413                                    return bilevel || gray8 || gray16 || pal8 || rgb24;
414                            }
415                            case(COLOR_PROMOTE_PROMOTETOPALETTED):
416                            {
417                                    return bilevel || gray8;
418                            }
419                            case(COLOR_ADJUST_HUESATURATIONVALUE):
420                            {
421                                    return pal8 || rgb24;
422                            }
423                            case(COLOR_REDUCE):
424                            {
425                                    return !bilevel;
426                            }
427                            case(COLOR_REDUCE_CONVERTTOGRAYSCALE):
428                            {
429                                    return pal8 || rgb;
430                            }
431                            case(COLOR_REDUCE_REDUCENUMBEROFSHADESOFGRAY):
432                            {
433                                    return gray8 || gray16;
434                            }
435                            case(COLOR_REDUCE_REDUCETOBILEVELTHRESHOLD):
436                            {
437                                    return gray8 || gray16;
438                            }
439                            case(COLOR_REDUCE_MEDIANCUT):
440                            {
441                                    return rgb24;
442                            }
443                            case(COLOR_REDUCE_OCTREE):
444                            {
445                                    return rgb24;
446                            }
447                            case(COLOR_REDUCE_UNIFORMPALETTE):
448                            {
449                                    return rgb24;
450                            }
451                            case(COLOR_REDUCE_MAPTOARBITRARYPALETTE):
452                            {
453                                    return rgb24;
454                            }
455                            case(COLOR_INVERT):
456                            {
457                                    return hasImage;
458                            }
459                            case(COLOR_CONVERTTOMINIMUMCOLORTYPE):
460                            {
461                                    return !bilevel;
462                            }
463                            case(TRANSFORMATIONS):
464                            {
465                                    return hasImage;
466                            }
467                            case(TRANSFORMATIONS_FLIP):
468                            {
469                                    return hasImage;
470                            }
471                            case(TRANSFORMATIONS_MIRROR):
472                            {
473                                    return hasImage;
474                            }
475                            case(TRANSFORMATIONS_ROTATELEFT90):
476                            {
477                                    return hasImage;
478                            }
479                            case(TRANSFORMATIONS_ROTATERIGHT90):
480                            {
481                                    return hasImage;
482                            }
483                            case(TRANSFORMATIONS_ROTATE180):
484                            {
485                                    return hasImage;
486                            }
487                            case(TRANSFORMATIONS_SHEAR):
488                            {
489                                    return hasImage;
490                            }
491                            case(TRANSFORMATIONS_SCALE):
492                            {
493                                    return hasImage;
494                            }
495                            case(TRANSFORMATIONS_CROP):
496                            {
497                                    return hasImage;
498                            }
499                            case(FILTERS):
500                            {
501                                    return hasImage && !pal8;
502                            }
503                            case(FILTERS_BLUR):
504                            case(FILTERS_SHARPEN):
505                            case(FILTERS_EDGEDETECTION):
506                            case(FILTERS_EMBOSS):
507                            case(FILTERS_PSYCHEDELICDISTILLATION):
508                            case(FILTERS_LITHOGRAPH):
509                            case(FILTERS_HORIZONTALSOBEL):
510                            case(FILTERS_VERTICALSOBEL):
511                            case(FILTERS_HORIZONTALPREWITT):
512                            case(FILTERS_VERTICALPREWITT):
513                            case(FILTERS_MEAN):
514                            case(FILTERS_OIL):
515                            {
516                                    return gray16 || gray8 || rgb24 || rgb48;
517                            }
518                            case(FILTERS_MAXIMUM):
519                            case(FILTERS_MINIMUM):
520                            case(FILTERS_MEDIAN):
521                            {
522                                    return gray16 || gray8 || rgb24 || bilevel || rgb48;
523                            }
524                            case(VIEW):
525                            case(VIEW_INTERPOLATIONTYPE):
526                            case(VIEW_INTERPOLATIONTYPE_NEARESTNEIGHBOR):
527                            case(VIEW_INTERPOLATIONTYPE_BILINEAR):
528                            case(VIEW_INTERPOLATIONTYPE_BICUBIC):
529                            {
530                                    return hasImage;
531                            }
532                            case(VIEW_SETORIGINALSIZE):
533                            {
534                                    return hasImage && !state.isZoomOriginalSize();
535                            }
536                            case(VIEW_ZOOMIN):
537                            {
538                                    return hasImage && !state.isMaximumZoom();
539                            }
540                            case(VIEW_ZOOMOUT):
541                            {
542                                    return hasImage && !state.isMinimumZoom();
543                            }
544                            case(HELP):
545                            {
546                                    return true;
547                            }
548                            case(HELP_ABOUT):
549                            {
550                                    return true;
551                            }
552                            case(HELP_SYSTEMINFORMATION):
553                            {
554                                    return true;
555                            }
556                            default:
557                            {
558                                    throw new IllegalArgumentException("Not a valid menu index: " + menuIndex);
559                            }
560                    }
561            }
562    
563            public void process(int menuIndex)
564            {
565                    switch (menuIndex)
566                    {
567                            case(FILE_OPEN):
568                            {
569                                    fileOpen();
570                                    break;
571                            }
572                            case(FILE_SAVEAS_GIF):
573                            {
574                                    fileSaveAsGif();
575                                    break;
576                            }
577                            case(FILE_SAVEAS_PALM):
578                            {
579                                    fileSaveAsPalm();
580                                    break;
581                            }
582                            case(FILE_SAVEAS_PBM):
583                            {
584                                    fileSaveAsPbm();
585                                    break;
586                            }
587                            case(FILE_SAVEAS_PGM):
588                            {
589                                    fileSaveAsPgm();
590                                    break;
591                            }
592                            case(FILE_SAVEAS_PNG):
593                            {
594                                    fileSaveAsPng();
595                                    break;
596                            }
597                            case(FILE_SAVEAS_PPM):
598                            {
599                                    fileSaveAsPpm();
600                                    break;
601                            }
602                            case(FILE_SAVEAS_SUNRASTER):
603                            {
604                                    fileSaveAsRas();
605                                    break;
606                            }
607                            case(FILE_SAVEAS_WINDOWSBMP):
608                            {
609                                    fileSaveAsBmp();
610                                    break;
611                            }
612                            case(FILE_CLOSE):
613                            {
614                                    fileClose();
615                                    break;
616                            }
617                            case(FILE_EXIT):
618                            {
619                                    fileExit();
620                                    break;
621                            }
622                            case(EDIT_UNDO):
623                            {
624                                    editUndo();
625                                    break;
626                            }
627                            case(EDIT_REDO):
628                            {
629                                    editRedo();
630                                    break;
631                            }
632                            case(COLOR_ADJUST_BRIGHTNESS):
633                            {
634                                    colorAdjustBrightness();
635                                    break;
636                            }
637                            case(COLOR_ADJUST_CONTRAST):
638                            {
639                                    colorAdjustContrast();
640                                    break;
641                            }
642                            case(COLOR_ADJUST_GAMMA):
643                            {
644                                    colorAdjustGamma();
645                                    break;
646                            }
647                            case(COLOR_ADJUST_HUESATURATIONVALUE):
648                            {
649                                    colorAdjustHueSaturationValue();
650                                    break;
651                            }
652                            case(COLOR_HISTOGRAM_COUNTCOLORSUSED):
653                            {
654                                    colorHistogramCountColorsUsed();
655                                    break;
656                            }
657                            case(COLOR_HISTOGRAM_EQUALIZE):
658                            {
659                                    colorHistogramEqualize();
660                                    break;
661                            }
662                            case(COLOR_HISTOGRAM_NORMALIZE):
663                            {
664                                    colorHistogramNormalize();
665                                    break;
666                            }
667                            case(COLOR_HISTOGRAM_TEXTUREPROPERTIES):
668                            {
669                                    colorHistogramTextureProperties();
670                                    break;
671                            }
672                            case(COLOR_HISTOGRAM_SAVEHISTOGRAMAS):
673                            {
674                                    colorHistogramSaveHistogramAs();
675                                    break;
676                            }
677                            case(COLOR_HISTOGRAM_SAVECOOCCURRENCEMATRIXAS):
678                            {
679                                    colorHistogramSaveCoOccurrenceMatrixAs();
680                                    break;
681                            }
682                            case(COLOR_HISTOGRAM_SAVECOOCCURRENCEFREQUENCYMATRIXAS):
683                            {
684                                    colorHistogramSaveCoOccurrenceFrequencyMatrixAs();
685                                    break;
686                            }
687                            case(COLOR_PALETTE_SAVEAS):
688                            {
689                                    colorPaletteSaveAs();
690                                    break;
691                            }
692                            case(COLOR_PROMOTE_PROMOTETOPALETTED):
693                            {
694                                    colorPromotePromoteToPaletted();
695                                    break;
696                            }
697                            case(COLOR_PROMOTE_PROMOTETOGRAY8):
698                            {
699                                    colorPromotePromoteToGray8();
700                                    break;
701                            }
702                            case(COLOR_PROMOTE_PROMOTETOGRAY16):
703                            {
704                                    colorPromotePromoteToGray16();
705                                    break;
706                            }
707                            case(COLOR_PROMOTE_PROMOTETORGB24):
708                            {
709                                    colorPromotePromoteToRgb24();
710                                    break;
711                            }
712                            case(COLOR_PROMOTE_PROMOTETORGB48):
713                            {
714                                    colorPromotePromoteToRgb48();
715                                    break;
716                            }
717                            case(COLOR_REDUCE_REDUCETOBILEVELTHRESHOLD):
718                            {
719                                    colorReduceReduceToBilevelThreshold();
720                                    break;
721                            }
722                            case(COLOR_REDUCE_REDUCENUMBEROFSHADESOFGRAY):
723                            {
724                                    colorReduceReduceNumberOfShadesOfGray();
725                                    break;
726                            }
727                            case(COLOR_REDUCE_CONVERTTOGRAYSCALE):
728                            {
729                                    colorReduceConvertToGrayscale();
730                                    break;
731                            }
732                            case(COLOR_REDUCE_MEDIANCUT):
733                            {
734                                    colorReduceMedianCut();
735                                    break;
736                            }
737                            case(COLOR_REDUCE_OCTREE):
738                            {
739                                    colorReduceOctree();
740                                    break;
741                            }
742                            case(COLOR_REDUCE_UNIFORMPALETTE):
743                            {
744                                    colorReduceUniformPalette();
745                                    break;
746                            }
747                            case(COLOR_REDUCE_MAPTOARBITRARYPALETTE):
748                            {
749                                    colorReduceMapToArbitraryPalette();
750                                    break;
751                            }
752                            case(COLOR_INVERT):
753                            {
754                                    colorInvert();
755                                    break;
756                            }
757                            case(COLOR_CONVERTTOMINIMUMCOLORTYPE):
758                            {
759                                    colorConvertToMinimumColorType();
760                                    break;
761                            }
762                            case(TRANSFORMATIONS_FLIP):
763                            {
764                                    transformationsFlip();
765                                    break;
766                            }
767                            case(TRANSFORMATIONS_MIRROR):
768                            {
769                                    transformationsMirror();
770                                    break;
771                            }
772                            case(TRANSFORMATIONS_ROTATELEFT90):
773                            {
774                                    transformationsRotate90Left();
775                                    break;
776                            }
777                            case(TRANSFORMATIONS_ROTATERIGHT90):
778                            {
779                                    transformationsRotate90Right();
780                                    break;
781                            }
782                            case(TRANSFORMATIONS_ROTATE180):
783                            {
784                                    transformationsRotate180();
785                                    break;
786                            }
787                            case(TRANSFORMATIONS_CROP):
788                            {
789                                    transformationsCrop();
790                                    break;
791                            }
792                            case(TRANSFORMATIONS_SCALE):
793                            {
794                                    transformationsScale();
795                                    break;
796                            }
797                            case(TRANSFORMATIONS_SHEAR):
798                            {
799                                    transformationsShear();
800                                    break;
801                            }
802                            case(FILTERS_BLUR):
803                            {
804                                    filtersBlur();
805                                    break;
806                            }
807                            case(FILTERS_SHARPEN):
808                            {
809                                    filtersSharpen();
810                                    break;
811                            }
812                            case(FILTERS_EDGEDETECTION):
813                            {
814                                    filtersEdgeDetection();
815                                    break;
816                            }
817                            case(FILTERS_EMBOSS):
818                            {
819                                    filtersEmboss();
820                                    break;
821                            }
822                            case(FILTERS_PSYCHEDELICDISTILLATION):
823                            {
824                                    filtersPsychedelicDistillation();
825                                    break;
826                            }
827                            case(FILTERS_LITHOGRAPH):
828                            {
829                                    filtersLithograph();
830                                    break;
831                            }
832                            case(FILTERS_HORIZONTALSOBEL):
833                            {
834                                    filtersHorizontalSobel();
835                                    break;
836                            }
837                            case(FILTERS_VERTICALSOBEL):
838                            {
839                                    filtersVerticalSobel();
840                                    break;
841                            }
842                            case(FILTERS_HORIZONTALPREWITT):
843                            {
844                                    filtersHorizontalPrewitt();
845                                    break;
846                            }
847                            case(FILTERS_VERTICALPREWITT):
848                            {
849                                    filtersVerticalPrewitt();
850                                    break;
851                            }
852                            case(FILTERS_MINIMUM):
853                            {
854                                    filtersMinimum();
855                                    break;
856                            }
857                            case(FILTERS_MAXIMUM):
858                            {
859                                    filtersMaximum();
860                                    break;
861                            }
862                            case(FILTERS_MEDIAN):
863                            {
864                                    filtersMedian();
865                                    break;
866                            }
867                            case(FILTERS_MEAN):
868                            {
869                                    filtersMean();
870                                    break;
871                            }
872                            case(FILTERS_OIL):
873                            {
874                                    filtersOil();
875                                    break;
876                            }
877                            case(VIEW_ZOOMIN):
878                            {
879                                    viewZoomIn();
880                                    break;
881                            }
882                            case(VIEW_ZOOMOUT):
883                            {
884                                    viewZoomOut();
885                                    break;
886                            }
887                            case(VIEW_SETORIGINALSIZE):
888                            {
889                                    viewSetOriginalSize();
890                                    break;
891                            }
892                            case(VIEW_INTERPOLATIONTYPE_NEARESTNEIGHBOR):
893                            {
894                                    viewInterpolationTypeNearestNeighbor();
895                                    break;
896                            }
897                            case(VIEW_INTERPOLATIONTYPE_BILINEAR):
898                            {
899                                    viewInterpolationTypeBilinear();
900                                    break;
901                            }
902                            case(VIEW_INTERPOLATIONTYPE_BICUBIC):
903                            {
904                                    viewInterpolationTypeBicubic();
905                                    break;
906                            }
907                            case(HELP_ABOUT):
908                            {
909                                    helpAbout();
910                                    break;
911                            }
912                            case(HELP_SYSTEMINFORMATION):
913                            {
914                                    helpSystemInformation();
915                                    break;
916                            }
917                            default:
918                            {
919                                    // error?
920                                    break;
921                            }
922                    }
923            }
924    }