Statistics
| Revision:

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
}