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 @ 44408

History | View | Annotate | Download (1.93 KB)

1 44126 jjdelcerro
package org.gvsig.expressionevaluator.impl.function.image;
2 43512 jjdelcerro
3 44126 jjdelcerro
import java.awt.geom.AffineTransform;
4 43512 jjdelcerro
import org.apache.commons.lang3.Range;
5 44126 jjdelcerro
import org.gvsig.expressionevaluator.ExpressionRuntimeException;
6 43521 jjdelcerro
import org.gvsig.expressionevaluator.Interpreter;
7 43512 jjdelcerro
import org.gvsig.expressionevaluator.spi.AbstractFunction;
8
9 44126 jjdelcerro
public class ImageTransformFunction extends AbstractFunction {
10 43512 jjdelcerro
11 44126 jjdelcerro
    public ImageTransformFunction() {
12 43512 jjdelcerro
        super(
13 44126 jjdelcerro
                "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
                "Image",
23
                false
24 43512 jjdelcerro
        );
25
    }
26
27
    @Override
28 44009 jjdelcerro
    public boolean allowConstantFolding() {
29
        return true;
30
    }
31 44126 jjdelcerro
32 44009 jjdelcerro
    @Override
33 43521 jjdelcerro
    public Object call(Interpreter interpreter, Object[] args) {
34 44126 jjdelcerro
        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.getBufferedImage();
57 43512 jjdelcerro
    }
58
59
}