1 /* 2 * $RCSfile: MlibMedianFilterRIF.java,v $ 3 * 4 * Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved. 5 * 6 * Use is subject to license terms. 7 * 8 * $Revision: 1.1 $ 9 * $Date: 2005/02/11 04:56:00 $ 10 * $State: Exp $ 11 */ 12 package com.lightcrafts.media.jai.mlib; 13 import java.awt.RenderingHints; 14 import java.awt.image.RenderedImage; 15 import java.awt.image.renderable.ParameterBlock; 16 import java.awt.image.renderable.RenderedImageFactory; 17 import com.lightcrafts.mediax.jai.BorderExtender; 18 import com.lightcrafts.mediax.jai.ImageLayout; 19 import com.lightcrafts.mediax.jai.operator.MedianFilterShape; 20 import com.lightcrafts.media.jai.opimage.RIFUtil; 21 22 /** 23 * Creates a MlibMedianFilterOpImage subclass for the given input 24 * mask type 25 * @see MlibMedianFilterOpImage 26 */ 27 public class MlibMedianFilterRIF implements RenderedImageFactory { 28 29 /** Constructor. */ MlibMedianFilterRIF()30 public MlibMedianFilterRIF() {} 31 32 /** 33 * Create a new instance of MlibMedianFilterOpImage in the rendered layer. 34 * This method satisfies the implementation of RIF. 35 * 36 * @param paramBlock The source image and the convolution kernel. 37 */ create(ParameterBlock paramBlock, RenderingHints renderHints)38 public RenderedImage create(ParameterBlock paramBlock, 39 RenderingHints renderHints) { 40 // Get ImageLayout from renderHints if any. 41 ImageLayout layout = RIFUtil.getImageLayoutHint(renderHints); 42 43 44 if (!MediaLibAccessor.isMediaLibCompatible(paramBlock, layout) || 45 !MediaLibAccessor.hasSameNumBands(paramBlock, layout)) { 46 return null; 47 } 48 49 // Get BorderExtender from renderHints if any. 50 BorderExtender extender = RIFUtil.getBorderExtenderHint(renderHints); 51 52 MedianFilterShape maskType = 53 (MedianFilterShape)paramBlock.getObjectParameter(0); 54 int maskSize = paramBlock.getIntParameter(1); 55 RenderedImage ri = paramBlock.getRenderedSource(0); 56 57 return new MlibMedianFilterOpImage(ri, 58 extender, 59 renderHints, 60 layout, 61 maskType, 62 maskSize); 63 } 64 } 65