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 / ImageTransformFunction.java @ 44924
History | View | Annotate | Download (1.91 KB)
1 |
package org.gvsig.expressionevaluator.impl.function.image; |
---|---|
2 |
|
3 |
import java.awt.geom.AffineTransform; |
4 |
import org.apache.commons.lang3.Range; |
5 |
import org.gvsig.expressionevaluator.ExpressionRuntimeException; |
6 |
import org.gvsig.expressionevaluator.Interpreter; |
7 |
import org.gvsig.expressionevaluator.spi.AbstractFunction; |
8 |
|
9 |
public class ImageTransformFunction extends AbstractFunction { |
10 |
|
11 |
public ImageTransformFunction() {
|
12 |
super(
|
13 |
"Image", "IMAGETRANSFORM", Range.between(2, 4), |
14 |
"",
|
15 |
"IMAGETRANSFORM({{image}})",
|
16 |
new String[]{ |
17 |
"image",
|
18 |
"transform",
|
19 |
"width - Optional.",
|
20 |
"height - Optional."
|
21 |
}, |
22 |
"SimpleImage",
|
23 |
false
|
24 |
); |
25 |
} |
26 |
|
27 |
@Override
|
28 |
public boolean allowConstantFolding() { |
29 |
return true; |
30 |
} |
31 |
|
32 |
@Override
|
33 |
public Object call(Interpreter interpreter, Object[] args) { |
34 |
Object source = this.getObject(args, 0); |
35 |
AffineTransform transform = (AffineTransform) this.getObject(args, 1); |
36 |
SimpleImage image = ImageReadFunction.createSimpleImage(source); |
37 |
if( image.isEmpty() ) {
|
38 |
return null; |
39 |
} |
40 |
switch(args.length) {
|
41 |
case 2: |
42 |
image = image.transform(transform); |
43 |
break;
|
44 |
case 4: |
45 |
int width = this.getInt(args, 2); |
46 |
int height = this.getInt(args, 3); |
47 |
image = image.transform(transform, width, height); |
48 |
break;
|
49 |
default:
|
50 |
throw new ExpressionRuntimeException( |
51 |
null,
|
52 |
"Incorrect number of arguments",
|
53 |
"The IMAGETRANSFORM function has 2 arguments, image and transform, or 4 arguments, image, transform, width and height."
|
54 |
); |
55 |
} |
56 |
return image;
|
57 |
} |
58 |
|
59 |
} |