svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.lib / org.gvsig.expressionevaluator.lib.impl / src / main / java / org / gvsig / expressionevaluator / impl / function / image / ImageResizeFunction.java @ 44924
History | View | Annotate | Download (1.85 KB)
1 |
package org.gvsig.expressionevaluator.impl.function.image; |
---|---|
2 |
|
3 |
import org.apache.commons.lang3.Range; |
4 |
import org.gvsig.expressionevaluator.ExpressionRuntimeException; |
5 |
import org.gvsig.expressionevaluator.Interpreter; |
6 |
import org.gvsig.expressionevaluator.spi.AbstractFunction; |
7 |
|
8 |
public class ImageResizeFunction extends AbstractFunction { |
9 |
|
10 |
public ImageResizeFunction() {
|
11 |
super(
|
12 |
"Image", "IMAGERESIZE", Range.between(1, 3), |
13 |
"Resize an image, specifing a scale factor or a with and height",
|
14 |
"IMAGERESIZE({{image}}, factor)",
|
15 |
new String[]{ |
16 |
"image",
|
17 |
"factor",
|
18 |
"width",
|
19 |
"height"
|
20 |
}, |
21 |
"SimpleImage",
|
22 |
false
|
23 |
); |
24 |
} |
25 |
|
26 |
@Override
|
27 |
public boolean allowConstantFolding() { |
28 |
return true; |
29 |
} |
30 |
|
31 |
@Override
|
32 |
public Object call(Interpreter interpreter, Object[] args) { |
33 |
Object arg0 = this.getObject(args, 0); |
34 |
SimpleImage image = ImageReadFunction.createSimpleImage(arg0); |
35 |
if( image.isEmpty() ) {
|
36 |
return null; |
37 |
} |
38 |
switch(args.length) {
|
39 |
case 2: |
40 |
double factor = this.getDouble(args, 1); |
41 |
image = image.resize(factor); |
42 |
break;
|
43 |
case 3: |
44 |
int width = this.getInt(args, 1); |
45 |
int height = this.getInt(args, 2); |
46 |
image = image.resize(width, height); |
47 |
break;
|
48 |
default:
|
49 |
throw new ExpressionRuntimeException( |
50 |
null,
|
51 |
"Incorrect number of arguments",
|
52 |
"The IMAGERESIZE function has 2 arguments, the image and a scale factor, or 3, the image, width and height"
|
53 |
); |
54 |
} |
55 |
return image;
|
56 |
} |
57 |
|
58 |
} |