001    package org.mycore.services.imaging.JAI.imgOperation;
002    
003    import java.awt.image.renderable.ParameterBlock;
004    
005    import javax.media.jai.Interpolation;
006    import javax.media.jai.JAI;
007    import javax.media.jai.PlanarImage;
008    import javax.media.jai.RenderedOp;
009    
010    
011    public class MCRJAIScaleOp implements MCRJAIImageOp{
012        protected float scaleFactor;
013        
014        public MCRJAIScaleOp(float scaleFactor) {
015            this.scaleFactor = scaleFactor;
016        }
017        
018        protected RenderedOp scale(PlanarImage image, float scaleFactor) {
019            if (scaleFactor <= 0.0001)
020                return (RenderedOp) image;
021            
022            ParameterBlock pb = new ParameterBlock();
023            pb.addSource(image);
024            pb.add(scaleFactor);
025            pb.add(scaleFactor);
026            pb.add(0f);
027            pb.add(0f);
028            pb.add(Interpolation.getInstance(Interpolation.INTERP_NEAREST));
029            return JAI.create("scale", pb);
030        }
031        
032        public RenderedOp executeOp(PlanarImage image){
033            return scale(image, scaleFactor);
034        }
035    
036        public int getOrder() {
037            return 0;
038        }
039    }