⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imageeffects.java

📁 j2me源代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                Choice.EXCLUSIVE);
        for (i = 0; i < scale_array.length; ++i) {
            heightScaleSelector.append(
                    Integer.toString(scale_array[i]) + "%", null);
        }
        heightScaleSelector.setSelectedIndex(indexOutputScaleH, true);
        heightScaleSelector.setFitPolicy(Choice.TEXT_WRAP_OFF);
        /*
        heightScaleSelector.setLayout(
                Item.LAYOUT_2 | 
                //Item.LAYOUT_EXPAND | Item.LAYOUT_VEXPAND | 
                Item.LAYOUT_SHRINK | Item.LAYOUT_VSHRINK | 
                Item.LAYOUT_CENTER | Item.LAYOUT_TOP);
         */

        borderScaleSelector = new ChoiceGroup(
                "Enlarge Source Image", 
                Choice.MULTIPLE);
        borderScaleSelector.append("Generate Border", null);
        borderScaleSelector.setSelectedFlags(indexOutputBorder);
        borderScaleSelector.setFitPolicy(Choice.TEXT_WRAP_OFF);
        /*
        borderScaleSelector.setLayout(
                Item.LAYOUT_NEWLINE_BEFORE | 
                Item.LAYOUT_2 | 
                //Item.LAYOUT_EXPAND | Item.LAYOUT_VEXPAND | 
                Item.LAYOUT_SHRINK | Item.LAYOUT_VSHRINK | 
                Item.LAYOUT_CENTER | Item.LAYOUT_VCENTER);
         */
        
        rotateScaleSelector = new ChoiceGroup(
                "Rotate Target Image", 
                Choice.EXCLUSIVE);
                rotateScaleSelector.append("No rotation", null);
                rotateScaleSelector.append("Clockwise 90", null);
                rotateScaleSelector.append("Clockwise 180", null);
                rotateScaleSelector.append("Clockwise 270", null);
        rotateScaleSelector.setSelectedIndex(indexOutputRotate, true);
        rotateScaleSelector.setFitPolicy(Choice.TEXT_WRAP_OFF);
        /*
        rotateScaleSelector.setLayout(
                Item.LAYOUT_NEWLINE_BEFORE | 
                Item.LAYOUT_2 | 
                //Item.LAYOUT_EXPAND | Item.LAYOUT_VEXPAND | 
                Item.LAYOUT_SHRINK | Item.LAYOUT_VSHRINK | 
                Item.LAYOUT_CENTER | Item.LAYOUT_BOTTOM);
         */
        
        scaleForm.append(widthScaleSelector);
        scaleForm.append(heightScaleSelector);
        scaleForm.append(borderScaleSelector);
        scaleForm.append(rotateScaleSelector);
        
        scaleForm.addCommand(cmdExit);
        scaleForm.addCommand(cmdDone);
        
        //fill effectForm with components
        effectSelector = new ChoiceGroup(
                "Image Effect", 
                Choice.EXCLUSIVE);
        effectSelector.append("No Effects", null);
        effectSelector.append("Monochrome", null);
        effectSelector.append("Negative", null);
        effectSelector.append("Emboss", null);
        effectSelector.append("Sepia", null);
        effectSelector.append("Solarize", null);
        effectSelector.append("Red Eye Reduction", null);
        effectSelector.setSelectedIndex(indexImageEffect, true);
        effectSelector.setFitPolicy(Choice.TEXT_WRAP_OFF);
        /*
        effectSelector.setLayout(
                Item.LAYOUT_2 | 
                //Item.LAYOUT_EXPAND | Item.LAYOUT_VEXPAND | 
                Item.LAYOUT_SHRINK | Item.LAYOUT_VSHRINK | 
                Item.LAYOUT_CENTER | Item.LAYOUT_VCENTER);
         */
        
        effectForm.append(effectSelector);
        
        effectForm.addCommand(cmdExit);
        effectForm.addCommand(cmdDone);
        
        //fill overlayForm with components
        overlaySelector = new ChoiceGroup(
                "Draw Image Overlays", 
                Choice.MULTIPLE);
        overlaySelector.append("#1 (horizontal)", null);
        overlaySelector.append("#2 (vertical)", null);
        overlaySelector.setSelectedFlags(indexOutputOverlay);
        
        overlayForm.append(overlaySelector);
        
        overlayColor = new TextField[2][4];
        for (i = 0; i < 2; ++i) {
            for (j = 0; j < 4; ++j) {
                overlayColor[i][j] = 
                    new TextField(color_name_array[j] + "#" + (i+1), "", 3, TextField.NUMERIC);
                overlayColor[i][j].setString(Integer.toString(argb_color[i][j] & 0xFF));
                overlayColor[i][j].setLayout(
                        Item.LAYOUT_2 | 
                        //Item.LAYOUT_EXPAND | Item.LAYOUT_VEXPAND | 
                        Item.LAYOUT_SHRINK | //Item.LAYOUT_VSHRINK | 
                        //Item.LAYOUT_CENTER | Item.LAYOUT_VCENTER |
                        ((j == 3) ? Item.LAYOUT_NEWLINE_AFTER : 0));
               overlayForm.append(overlayColor[i][j]);
           }
        }
        StringItem overlayNote = new StringItem("Attention!", 
                "\nAll input values" +
                "\nwill be converted" +
                "\nto range[0..255]\n");
        overlayNote.setLayout(
                Item.LAYOUT_2 | 
                //Item.LAYOUT_EXPAND | Item.LAYOUT_VEXPAND | 
                Item.LAYOUT_SHRINK | Item.LAYOUT_VSHRINK | 
                Item.LAYOUT_CENTER | Item.LAYOUT_BOTTOM);
        overlayForm.append(overlayNote);
                
        overlayForm.addCommand(cmdExit);
        overlayForm.addCommand(cmdDone);
       
        resultViewer.addCommand(cmdExit);
        resultViewer.addCommand(cmdSetData);
        resultViewer.addCommand(cmdSetOrder);
        resultViewer.addCommand(cmdSetScale);
        resultViewer.addCommand(cmdSetEffect);
        resultViewer.addCommand(cmdSetOverlay);
        
        //ADD shortcuts to some effects (instead of Form invokation)
        //resultViewer.addCommand(cmdNoEffect);
        resultViewer.addCommand(cmdMonochrome);
        resultViewer.addCommand(cmdNegative);
        //resultViewer.addCommand(cmdEmboss);
        resultViewer.addCommand(cmdSepia);
        resultViewer.addCommand(cmdSolarize);
        //resultViewer.addCommand(cmdRedEye);
        
        //set form event listeners
        dataForm.setCommandListener(this);
        orderForm.setCommandListener(this);
        scaleForm.setCommandListener(this);
        effectForm.setCommandListener(this);
        overlayForm.setCommandListener(this);
        resultViewer.setCommandListener(this);
        
        /*
        changeOriginalImageItem();
        currentForm = resultViewer;
        */
        currentForm = dataForm;
        
    }

    public void startApp() {
        //display original image
        display.setCurrent(currentForm);
    }

    public void pauseApp() {

    }

    public void destroyApp(boolean unconditional) {

    }

    public void commandAction(Command c, Displayable s) {
        if (c == cmdExit) {
            destroyApp(true);
            notifyDestroyed();
            
        } else if (c == cmdSetData) {
            currentForm = dataForm;
            display.setCurrent(currentForm);
            
        } else if (c == cmdSetOrder) {
            currentForm = orderForm;
            display.setCurrent(currentForm);
            
        } else if (c == cmdSetScale) {
            currentForm = scaleForm;
            display.setCurrent(currentForm);
            
        } else if (c == cmdSetEffect) {
            currentForm = effectForm;
            display.setCurrent(currentForm);
            
        } else if (c == cmdSetOverlay) {
            currentForm = overlayForm;
            display.setCurrent(currentForm);
            
        } else {
            boolean input_changed = first_form;
            boolean output_changed = first_form;
            
            if (c == cmdDone) {
                // check if currentForm == dataForm or scaleForm or ...
                if (currentForm == dataForm) {
                    int input_format_index = 
                            inputFormatSelector.getSelectedIndex();
                    int output_format_index = 
                            outputFormatSelector.getSelectedIndex();

                    if (input_format_index >= 0 && input_format_index < format_array.length) {
                        input_changed = input_changed ||
                                (input_format_index != indexInputImageFormat);
                        indexInputImageFormat = input_format_index;
                        need_input_stream = (indexInputImageFormat != 0);
                    }

                    if (output_format_index >= 0 && output_format_index < format_array.length) {
                        output_changed = output_changed ||
                                (output_format_index != indexOutputImageFormat);
                        indexOutputImageFormat = output_format_index;
                        need_output_stream = (indexOutputImageFormat != 0);
                    }
                    
                } else if (currentForm == orderForm) {
                    for (int i = 0; i < effectOrder.length; ++i) {
                        int value;
                        try {
                            value = Integer.parseInt(effectOrder[i].getString());
                        } catch (NumberFormatException e) {
                            value = i;
                        }
                        output_changed = output_changed ||
                                (value != indexEffectOrder[i]);
                        indexEffectOrder[i] = value;
                    }
                    
                } else if (currentForm == scaleForm) {
                    int width_index = 
                        widthScaleSelector.getSelectedIndex();
                    int height_index = 
                        heightScaleSelector.getSelectedIndex();
                    boolean border_flags[] = new boolean[/*1*/indexOutputBorder.length];
                    int border_number = 
                            borderScaleSelector.getSelectedFlags(border_flags);
                    int rotate_index = 
                        rotateScaleSelector.getSelectedIndex();
                    
                    if (width_index >= 0 && width_index < scale_array.length) {
                        output_changed = output_changed ||
                                (width_index != indexOutputScaleW);
                        indexOutputScaleW = width_index;
                    }
                    if (height_index >= 0 && height_index < scale_array.length) {
                        output_changed = output_changed ||
                                (height_index != indexOutputScaleH);
                        indexOutputScaleH = height_index;
                    }
                    if (border_number >= 0 && border_number <= borderScaleSelector.size()) {
                        output_changed =  output_changed ||
                                (indexOutputBorder[0] != border_flags[0]);
                        indexOutputBorder = border_flags;
                    }
                    if (rotate_index >= 0 && rotate_index <= 3) {
                        output_changed = output_changed ||
                                (rotate_index != indexOutputRotate);
                        indexOutputRotate = rotate_index;
                    }
                    
                } else if (currentForm == effectForm) {
                    int effect_index = 
                        effectSelector.getSelectedIndex();
                    
                    if (effect_index >= 0 && effect_index < effect_array.length) {
                        output_changed = output_changed || 
                                (effect_index != indexImageEffect);
                        indexImageEffect = effect_index;
                    }
                    
                } else if (currentForm == overlayForm) {
                    boolean overlay_flags[] = new boolean[/*2*/indexOutputOverlay.length];
                    int overlay_number = 
                            overlaySelector.getSelectedFlags(overlay_flags);
                    if (overlay_number >= 0 && overlay_number <= overlaySelector.size()) {
                        output_changed =  output_changed ||
                                (indexOutputOverlay[0] != overlay_flags[0]) ||
                                (indexOutputOverlay[1] != overlay_flags[1]);
                        indexOutputOverlay = overlay_flags;
                    }
                    
                    for (int i = 0; i < 2; ++i) {
                        for (int j = 0; j < 4; ++j) {
                            int value;
                            try {
                                value = Integer.parseInt(overlayColor[i][j].getString());
                                value = Math.max(value, 0x00);
                                value = Math.min(value, 0xFF);
                                output_changed = output_changed ||
                                        (argb_color[i][j] != value);
                                argb_color[i][j] = value;
                            } catch (NumberFormatException e) {
                                value = argb_color[i][j] & 0xFF;
                            }
                            overlayColor[i][j].setString(Integer.toString(value));
                        }
                    }
                }
                
                currentForm = resultViewer;
                display.setCurrent(currentForm);
                first_form = false;
                
            } else if (c == cmdNoEffect) {
                indexImageEffect = 0;
                effectSelector.setSelectedIndex(indexImageEffect, true);
                output_changed = true;
            } else if (c == cmdMonochrome) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -