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 / 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
}