📄 imageeffects.java
字号:
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 + -