Java 类java.awt.image.renderable.ParameterBlock 实例源码

项目:rastertheque    文件:SubsampleAverageCRIF.java   
/**
    * Gets the bounding box for the output of <code>ScaleOpImage</code>.
    * This method satisfies the implementation of CRIF.
    */
   public Rectangle2D getBounds2D(ParameterBlock paramBlock) {        

       RenderableImage source = paramBlock.getRenderableSource(0);

       double scaleX = paramBlock.getDoubleParameter(0);
       double scaleY = paramBlock.getDoubleParameter(1);

// Get the source dimensions
float x0 = (float)source.getMinX();
float y0 = (float)source.getMinY() ;
float w = (float)source.getWidth();
float h = (float)source.getHeight();

// Forward map the source using x0, y0, w and h
float d_x0 = (float)(x0 * scaleX);
float d_y0 = (float)(y0 * scaleY);
float d_w = (float)(w * scaleX);
float d_h = (float)(h * scaleY);

return new Rectangle2D.Float(d_x0, d_y0, d_w, d_h);
   }
项目:rastertheque    文件:MultiplyConstDescriptor.java   
/**
 * Validates the input parameter.
 *
 * <p> In addition to the standard checks performed by the
 * superclass method, this method checks that the length of the
 * "constants" array is at least 1.
 */
protected boolean validateParameters(ParameterBlock args,
                                     StringBuffer message) {
    if (!super.validateParameters(args, message)) {
        return false;
    }

    int length = ((double[])args.getObjectParameter(0)).length;
    if (length < 1) {
        message.append(getName() + " " +
                       JaiI18N.getString("MultiplyConstDescriptor2"));
        return false;
    }

    return true;
}
项目:orbit-image-analysis    文件:OrbitTiledImage2.java   
private PlanarImage convertColorModel(PlanarImage pi) {
    int numComponents = pi.getColorModel().getNumComponents();
    boolean isGrey = numComponents == 1;
    ColorModel colorModel = rgbColorModel;
    if (isGrey) colorModel = grayColorModel;
    try {
        ParameterBlock pb = new ParameterBlock();
        pb.addSource(pi).add(colorModel);
        RenderedOp dst = JAI.create("ColorConvert", pb);
        return dst.getRendering();
    } catch (IllegalArgumentException ex) {
        logger.info("Error: Cannot convert color model. Original color model: " + pi.getColorModel());
        return null;
    }

}
项目:orbit-image-analysis    文件:OrbitTiledImage2.java   
public static PlanarImage adjustBrightness(PlanarImage src, final double b) {
    final double[][] matrixRGB = {
            {1d, 0D, 0D, b},
            {0D, 1d, 0D, b},
            {0, 0D, 1d, b}

    };


    final double[][] matrixGrey = {
            {1d, b}
    };

    double[][] matrix;
    if (src.getSampleModel().getNumBands() > 1)
        matrix = matrixRGB;
    else matrix = matrixGrey;


    ParameterBlock pb = new ParameterBlock();
    pb.addSource(src);
    pb.add(matrix);
    return JAI.create("bandcombine", pb);
}
项目:geoxygene    文件:RenderGL11Util.java   
private static void graphicFillLineString(final LineSymbolizer symbolizer, final Shape shape, final Image image, final float size, final double opacity) {
    Double width = new Double(Math.max(1, shape.getBounds2D().getWidth()));
    Double height = new Double(Math.max(1, shape.getBounds2D().getHeight()));
    Double shapeHeight = new Double(size);
    double factor = shapeHeight.doubleValue() / image.getHeight(null);
    Double shapeWidth = new Double(image.getWidth(null) * factor);
    AffineTransform transform = AffineTransform.getTranslateInstance(shape.getBounds2D().getMinX(), shape.getBounds2D().getMinY());
    Image scaledImage = image.getScaledInstance(shapeWidth.intValue(), shapeHeight.intValue(), Image.SCALE_FAST);
    BufferedImage buff = new BufferedImage(shapeWidth.intValue(), shapeHeight.intValue(), BufferedImage.TYPE_INT_ARGB);
    buff.getGraphics().drawImage(scaledImage, 0, 0, null);
    ParameterBlock p = new ParameterBlock();
    p.addSource(buff);
    p.add(width.intValue());
    p.add(height.intValue());
    RenderedOp im = JAI.create("pattern", p);//$NON-NLS-1$
    BufferedImage bufferedImage = im.getAsBufferedImage();
    glDrawImage(bufferedImage, transform, null);
    bufferedImage.flush();
    im.dispose();
    scaledImage.flush();
    buff.flush();
}
项目:geoxygene    文件:LayerStylesPanel.java   
private static void drawGraphicFillPolygon(Image image, float size, Graphics2D graphics, double opacity, double widthSymbol, double heightSymbol, double offsetYSymbol, double offsetXSymbol) {
    Double shapeHeight = new Double(size);
    double factor = shapeHeight / image.getHeight(null);
    Double shapeWidth = new Double(Math.max(image.getWidth(null) * factor, 1));
    AffineTransform transform = AffineTransform.getTranslateInstance(offsetXSymbol, offsetYSymbol);
    Image scaledImage = image.getScaledInstance(shapeWidth.intValue(), shapeHeight.intValue(), Image.SCALE_FAST);
    BufferedImage buff = new BufferedImage(shapeWidth.intValue(), shapeHeight.intValue(), BufferedImage.TYPE_INT_ARGB);
    buff.getGraphics().drawImage(scaledImage, 0, 0, null);
    ParameterBlock p = new ParameterBlock();
    p.addSource(buff);
    p.add((int) widthSymbol);
    p.add((int) heightSymbol);
    RenderedOp im = JAI.create("pattern", p);//$NON-NLS-1$
    BufferedImage bufferedImage = im.getAsBufferedImage();
    graphics.drawImage(bufferedImage, transform, null);
    bufferedImage.flush();
    im.dispose();
    scaledImage.flush();
    buff.flush();
}
项目:geoxygene    文件:RasterClutterMethod.java   
private double computeEdgeDensityClutter(PlanarImage image) {
  // first compute the RenderedOp that computes both vertical and
  // horizontal
  // edge detection
  KernelJAI sobelVertKernel = KernelJAI.GRADIENT_MASK_SOBEL_VERTICAL;
  KernelJAI sobelHorizKernel = KernelJAI.GRADIENT_MASK_SOBEL_HORIZONTAL;
  ParameterBlock pb = new ParameterBlock();
  pb.addSource(image);
  pb.add(sobelHorizKernel);
  pb.add(sobelVertKernel);
  RenderedOp renderedOp = JAI.create("gradientmagnitude", pb);
  BufferedImage edgeImage = renderedOp.getAsBufferedImage();

  // then compute a density value, i.e. the mean
  int edgeTotal = 0;
  for (int i = 0; i < edgeImage.getWidth(); i++)
    for (int j = 0; j < edgeImage.getHeight(); j++)
      edgeTotal += Math.abs(edgeImage.getRGB(i, j));

  return Math.abs(edgeTotal / (edgeImage.getWidth() * edgeImage.getHeight()));
}
项目:Lucee4    文件:Image.java   
/**
 * add a border to image
 * @param thickness
 * @param color
 * @param borderType 
 */
public void addBorder(int thickness, Color color, int borderType)  throws ExpressionException{

    double colorArray[] = {color.getRed(), color.getGreen(), color.getBlue()};
    BorderExtender borderExtender = new BorderExtenderConstant(colorArray);

    ParameterBlock params = new ParameterBlock();
    params.addSource(image());
    params.add(thickness);
    params.add(thickness);
    params.add(thickness);
    params.add(thickness);
    if(BORDER_TYPE_CONSTANT==borderType)    params.add(borderExtender);
    else    params.add(BorderExtender.createInstance(borderType));
    //else if(BORDER_TYPE_WRAP==borderType)params.add(BorderExtender.createInstance(BorderExtender.BORDER_REFLECT));

    image((JAI.create("border", params)).getAsBufferedImage());

}
项目:Lucee4    文件:Image.java   
public void translate(int xtrans, int ytrans, Object interpolation) throws ExpressionException {

    RenderingHints hints = new RenderingHints(RenderingHints.KEY_INTERPOLATION,interpolation);
    if(interpolation!=RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR) {
        hints.add(new RenderingHints(JAI.KEY_BORDER_EXTENDER, BorderExtender.createInstance(1)));
    }

    ParameterBlock pb = new ParameterBlock();
    pb.addSource(image());
    BufferedImage img = JAI.create("translate", pb).getAsBufferedImage();
    Graphics2D graphics = img.createGraphics();
    graphics.clearRect(0, 0, img.getWidth(), img.getHeight());
    AffineTransform at = new AffineTransform();
    at.setToIdentity();
    graphics.drawImage(image(), new AffineTransformOp(at, hints), xtrans, ytrans);
    graphics.dispose();
    image(img);
}
项目:Lucee4    文件:Image.java   
public void _rotate(float x, float y, float angle, String interpolation) throws ExpressionException {

        float radiansAngle = (float)Math.toRadians(angle);

        // rotation center
        float centerX = (float)getWidth() / 2;
        float centerY = (float)getHeight() / 2;

        ParameterBlock pb = new ParameterBlock();
        pb.addSource(image());
        pb.add(centerX);
        pb.add(centerY);
        pb.add(radiansAngle);
        pb.add(new javax.media.jai.InterpolationBicubic(10));

        // create a new, rotated image
        image(JAI.create("rotate", pb).getAsBufferedImage());

    }
项目:Lucee4    文件:Image.java   
public void crop(float x, float y, float width, float height) throws ExpressionException {
    ParameterBlock params = new ParameterBlock();
    params.addSource(image());
    params.add(x);
    params.add(y);

    float w = getWidth();
    float h = getHeight();

    if (w < x + width) params.add(w - x);
    else params.add(width);

    if (h < y + height) params.add(h - y);
    else params.add(height);

    image(JAI.create("crop", params).getAsBufferedImage());
}
项目:Lucee    文件:Image.java   
public void blur(int blurFactor)  throws ExpressionException{
    ParameterBlock params = new ParameterBlock();
    params.addSource(image());
    params.add(blurFactor);
    RenderingHints hint= new RenderingHints(JAI.KEY_BORDER_EXTENDER,BorderExtender.createInstance(1));
    image(JAI.create("boxfilter", params, hint).getAsBufferedImage());
}
项目:Lucee    文件:Image.java   
public void translate(int xtrans, int ytrans, Object interpolation) throws ExpressionException {

    RenderingHints hints = new RenderingHints(RenderingHints.KEY_INTERPOLATION,interpolation);
    if(interpolation!=RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR) {
        hints.add(new RenderingHints(JAI.KEY_BORDER_EXTENDER, BorderExtender.createInstance(1)));
    }

    ParameterBlock pb = new ParameterBlock();
    pb.addSource(image());
    BufferedImage img = JAI.create("translate", pb).getAsBufferedImage();
    Graphics2D graphics = img.createGraphics();
    graphics.clearRect(0, 0, img.getWidth(), img.getHeight());
    AffineTransform at = new AffineTransform();
    at.setToIdentity();
    graphics.drawImage(image(), new AffineTransformOp(at, hints), xtrans, ytrans);
    graphics.dispose();
    image(img);
}
项目:Lucee    文件:Image.java   
public void _rotate(float x, float y, float angle, String interpolation) throws ExpressionException {

        float radiansAngle = (float)Math.toRadians(angle);

        // rotation center
        float centerX = (float)getWidth() / 2;
        float centerY = (float)getHeight() / 2;

        ParameterBlock pb = new ParameterBlock();
        pb.addSource(image());
        pb.add(centerX);
        pb.add(centerY);
        pb.add(radiansAngle);
        pb.add(new javax.media.jai.InterpolationBicubic(10));

        // create a new, rotated image
        image(JAI.create("rotate", pb).getAsBufferedImage());

    }
项目:Lucee    文件:Image.java   
public void crop(float x, float y, float width, float height) throws ExpressionException {
    ParameterBlock params = new ParameterBlock();
    params.addSource(image());
    params.add(x);
    params.add(y);

    float w = getWidth();
    float h = getHeight();

    if (w < x + width) params.add(w - x);
    else params.add(width);

    if (h < y + height) params.add(h - y);
    else params.add(height);

    image(JAI.create("crop", params).getAsBufferedImage());
}
项目:rastertheque    文件:ROI.java   
/**
 * Transforms an ROI using an imaging operation.  The operation is
 * specified by a <code>RenderedImageFactory</code>.  The
 * operation's <code>ParameterBlock</code>, minus the image source
 * itself is supplied, along with an index indicating where to
 * insert the ROI image.  The <code>renderHints</code> argument
 * allows rendering hints to be passed in.
 *
 * @param RIF A <code>RenderedImageFactory</code> that will be used
 *        to create the op.
 * @param paramBlock A <code>ParameterBlock</code> containing all
 *        sources and parameters for the op except for the ROI itself.
 * @param sourceIndex The index of the <code>ParameterBlock</code>'s
 *        sources where the ROI is to be inserted.
 * @param renderHints A <code>RenderingHints</code> object containing
 *        rendering hints, or null.
 * @throws IllegalArgumentException if RIF is null.
 * @throws IllegalArgumentException if paramBlock is null.
 */
public ROI performImageOp(RenderedImageFactory RIF,
                          ParameterBlock paramBlock,
                          int sourceIndex,
                          RenderingHints renderHints) {

    if (  RIF == null || paramBlock == null ) {
        throw new IllegalArgumentException(JaiI18N.getString("Generic0"));
    }

    // Clone the ParameterBlock and insert a source
    ParameterBlock pb = (ParameterBlock) paramBlock.clone();
    Vector sources = pb.getSources();
    sources.insertElementAt(this.getAsImage(), sourceIndex);

    // Create a new RenderedImage based on the RIF
    // and ParameterBlock.
    RenderedImage im = RIF.create(pb, renderHints);
    return new ROI(im, threshold);
}
项目:rastertheque    文件:ImageMIPMap.java   
/**
 * Constructor.  The down sampler is an "affine" operation that
 * uses the supplied <code>AffineTransform</code> and
 * <code>Interpolation</code> objects.
 * All input parameters are saved by reference.
 *
 * @param image  The image with the highest resolution.
 * @param transform  An affine matrix used with an "affine" operation
 *        to derive the lower resolution images.
 * @param interpolation  The interpolation method for the "affine"
 *        operation.  It may be <code>null</code>, in which case the
 *        default "nearest neighbor" interpolation method is used.
 *
 * @throws IllegalArgumentException if <code>image</code> is
 *         <code>null</code>.
 * @throws IllegalArgumentException if <code>transform</code> is
 *         <code>null</code>.
 */
public ImageMIPMap(RenderedImage image,
                   AffineTransform transform,
                   Interpolation interpolation) {
    this();

    if ( image == null || transform == null ) {
        throw new IllegalArgumentException(JaiI18N.getString("Generic0"));
    }

    ParameterBlock pb = new ParameterBlock();
    pb.addSource(image);
    pb.add(transform);
    pb.add(interpolation);

    downSampler = JAI.create("affine", pb);
    downSampler.removeSources();

    highestImage = image;
    currentImage = highestImage;
}
项目:rastertheque    文件:AddConstToCollectionOpImage.java   
/**
 * Constructor.
 *
 * @param sourceCollection  A collection of rendered images.
 * @param hints  Optionally contains destination image layout.
 * @param constants  The constants to be added, stored as reference.
 */
public AddConstToCollectionOpImage(Collection sourceCollection,
                                   RenderingHints hints,
                                   double[] constants) {
    /**
     * Try to create a new instance of the sourceCollection to be
     * used to store output images. If failed, use a Vector.
     */
    try {
        imageCollection =
            (Collection)sourceCollection.getClass().newInstance();
    } catch (Exception e) {
        imageCollection = new Vector();
    }

    Iterator iter = sourceCollection.iterator();
    while (iter.hasNext()) {
        ParameterBlock pb = new ParameterBlock();
        pb.addSource(iter.next());
        pb.add(constants);

        imageCollection.add(JAI.create("AddConst", pb, hints));
    }
}
项目:rastertheque    文件:MeanRIF.java   
/**
 * Creates a new instance of <code>MeanOpImage</code>
 * in the rendered layer. Any image layout information in
 * <code>RenderingHints</code> is ignored.
 * This method satisfies the implementation of RIF.
 */
public RenderedImage create(ParameterBlock paramBlock,
                            RenderingHints renderHints) {
    RenderedImage src = paramBlock.getRenderedSource(0);

    int xStart = src.getMinX();     // default values
    int yStart = src.getMinY();

    int maxWidth = src.getWidth();
    int maxHeight = src.getHeight();

    return new MeanOpImage(src,
                           (ROI)paramBlock.getObjectParameter(0),
                           xStart, yStart,
                           paramBlock.getIntParameter(1),
                           paramBlock.getIntParameter(2));
}
项目:rastertheque    文件:JAI.java   
/**
 * Creates a <code>RenderedOp</code> that takes 1
 * <code>RenderedImage</code> source,
 * 3 <code>float</code> parameters, 1 <code>int</code> parameter and 1 <code>Object</code> parameter.
 *
 * @param opName  The name of the operation.
 * @param src     The <code>RenderedImage</code> src parameter.
 * @param param1  The first <code>float</code> parameter.
 * @param param2  The <code>int</code> parameter.
 * @param param3  The second <code>float</code> parameter.
 * @param param4  The third <code>float</code> parameter.
 * @param param5  The <code>Object</code> parameter.
 * @deprecated as of JAI 1.1. Instead use
 *             <code>create(String,ParameterBlock)</code>.
 */
public static RenderedOp create(String opName,
                                RenderedImage src,
                                float param1,
                                int param2,
                                float param3,
                                float param4,
                                Object param5) {
    ParameterBlock args = new ParameterBlock();
    args.addSource(src);
    args.add(param1);
    args.add(param2);
    args.add(param3);
    args.add(param4);
    args.add(param5);
    return create(opName, args, null);
}
项目:rastertheque    文件:SubsampleAverageCRIF.java   
/**
    * Maps the output RenderContext into the RenderContext for the ith
    * source.
    * This method satisfies the implementation of CRIF.
    *
    * @param i               The index of the source image.
    * @param renderContext   The renderContext being applied to the operation.
    * @param paramBlock      The ParameterBlock containing the sources
    *                        and the translation factors.
    * @param image           The RenderableImageOp from which this method
    *                        was called.
    */
   public RenderContext mapRenderContext(int i,
                                         RenderContext renderContext,
                  ParameterBlock paramBlock,
                  RenderableImage image) {

       double scaleX = paramBlock.getDoubleParameter(0);
       double scaleY = paramBlock.getDoubleParameter(1);

       AffineTransform scale =
           new AffineTransform(scaleX, 0.0, 0.0, scaleY, 0.0, 0.0);

       RenderContext RC = (RenderContext)renderContext.clone();
       AffineTransform usr2dev = RC.getTransform();
       usr2dev.concatenate(scale);
RC.setTransform(usr2dev);
return RC;
   }
项目:rastertheque    文件:DivideByConstCRIF.java   
/**
 * Creates a new instance of <code>DivideByConstOpImage</code> in the
 * rendered layer.
 *
 * @param args   The source image and the constants.
 * @param hints  Optionally contains destination image layout.
 */
public RenderedImage create(ParameterBlock args,
                            RenderingHints renderHints) {
    // Get ImageLayout from renderHints if any.
    ImageLayout layout = RIFUtil.getImageLayoutHint(renderHints);


    /* Invert the constants. */
    double[] constants = (double[])args.getObjectParameter(0);
    int length = constants.length;

    double[] invConstants = new double[length];

    for (int i = 0; i < length; i++) {
        invConstants[i] = 1.0 / constants[i];
    }

    return new MultiplyConstOpImage(args.getRenderedSource(0),
                                    renderHints,
    layout,
    invConstants);
}
项目:rastertheque    文件:OperationNodeSupport.java   
/**
 * Compare the contents of two <code>ParameterBlock</code>s.
 */
private static int compare(ParameterBlock pb1, ParameterBlock pb2) {
    if(pb1 == null && pb2 == null) {
        return PB_EQUAL;
    }

    if((pb1 == null && pb2 != null) ||
       (pb1 != null && pb2 == null)) {
        return PB_DIFFER;
    }

    int result = PB_EQUAL;
    if(!equals(pb1.getSources(), pb2.getSources())) {
        result |= PB_SOURCES_DIFFER;
    }
    if(!equals(pb1.getParameters(), pb2.getParameters())) {
        result |= PB_PARAMETERS_DIFFER;
    }

    return result;
}
项目:rastertheque    文件:ScaleDescriptor.java   
/**
 * Validates the input parameters.
 *
 * <p> In addition to the standard checks performed by the
 * superclass method, this method checks that "xScale" and "yScale"
 * are both greater than 0.
 */
protected boolean validateParameters(ParameterBlock args,
                                     StringBuffer msg) {
    if (!super.validateParameters(args, msg)) {
        return false;
    }

    float xScale = args.getFloatParameter(0);
    float yScale = args.getFloatParameter(1);
    if (xScale <= 0 || yScale <= 0) {
        msg.append(getName() + " " +
                   JaiI18N.getString("ScaleDescriptor6"));
 return false;
    }

    return true;
}
项目:rastertheque    文件:MultiplyComplexDescriptor.java   
/**
    * Validates the input sources.
    *
    * <p> In addition to the standard checks performed by the
    * superclass method, this method checks that the source images
    * each have an even number of bands.
    */
   protected boolean validateSources(String modeName,
                  ParameterBlock args,
                                     StringBuffer msg) {
       if (!super.validateSources(modeName, args, msg)) {
           return false;
       }

if (!modeName.equalsIgnoreCase("rendered"))
    return true;

       RenderedImage src1 = args.getRenderedSource(0);
       RenderedImage src2 = args.getRenderedSource(1);

       if (src1.getSampleModel().getNumBands() % 2 != 0 ||
           src2.getSampleModel().getNumBands() % 2 != 0) {
           msg.append(getName() + " " +
                      JaiI18N.getString("MultiplyComplexDescriptor1"));
           return false;
       }

       return true;
   }
项目:rastertheque    文件:OperationNodeSupport.java   
/**
 * Constructor.
 *
 * @param paramIndex The index of the associated parameter.
 * @param dd The <code>DeferredData</code> object to observe.
 */
ParamObserver(int paramIndex, DeferredData dd) {
    if(dd == null) {
        throw new IllegalArgumentException(JaiI18N.getString("Generic0"));
    } else if(paramIndex < 0 ||
              (pb != null &&
               (paramIndex >=
                ((ParameterBlock)pb).getNumParameters()))) {
        throw new ArrayIndexOutOfBoundsException();
    }

    this.paramIndex = paramIndex;
    this.dd = dd;

    // Add this object as an Observer of the Deferred Data.
    dd.addObserver(this);
}
项目:rastertheque    文件:ROI.java   
/**
    * Performs an affine transformation and returns the result as a new
    * ROI.  The transformation is performed by an "Affine" RIF using the
    * indicated interpolation method.
    *
    * @param at an AffineTransform specifying the transformation.
    * @param interp the Interpolation to be used.
    * @throws IllegalArgumentException if at is null.
    * @throws IllegalArgumentException if interp is null.
    * @return a new ROI containing the transformed ROI data.
    */
   public ROI transform(AffineTransform at, Interpolation interp) {

if (at == null) {
    throw new IllegalArgumentException(JaiI18N.getString("ROI5"));
}

if (interp == null) {
    throw new IllegalArgumentException(JaiI18N.getString("ROI6"));
}

       ParameterBlock paramBlock = new ParameterBlock();
       paramBlock.add(at);
       paramBlock.add(interp);
       return performImageOp("Affine", paramBlock, 0, null);
   }
项目:rastertheque    文件:RenderableCRIF.java   
/**
    * Gets the output bounding box in rendering-independent space.
    * This method satisfies the implementation of CRIF.
    */
   public Rectangle2D getBounds2D(ParameterBlock paramBlock) {        
       RenderableImage mres = createRenderable(paramBlock);

return new Rectangle2D.Float(mres.getMinX(), mres.getMinY(),
                                    mres.getWidth(), mres.getHeight());
   }
项目:rastertheque    文件:NotDescriptor.java   
/**
    * Validates the input source.
    *
    * <p> In addition to the standard checks performed by the
    * superclass method, this method checks that the source image
    * is of integral data type.
    */
   protected boolean validateSources(String modeName,
                  ParameterBlock args,
                                     StringBuffer msg) {
       if (!super.validateSources(modeName, args, msg)) {
           return false;
       }

if (!modeName.equalsIgnoreCase("rendered"))
    return true;

RenderedImage src = args.getRenderedSource(0);

       int dtype = src.getSampleModel().getDataType();

       if (dtype != DataBuffer.TYPE_BYTE &&
           dtype != DataBuffer.TYPE_USHORT &&
           dtype != DataBuffer.TYPE_SHORT &&
           dtype != DataBuffer.TYPE_INT) {
           msg.append(getName() + " " + JaiI18N.getString("NotDescriptor1"));
           return false;
       }

       return true;
   }
项目:rastertheque    文件:SubtractFromConstDescriptor.java   
/**
 * Validates the input parameter.
 *
 * <p> In addition to the standard checks performed by the
 * superclass method, this method checks that the length of the
 * "constants" array is at least 1.
 */
protected boolean validateParameters(ParameterBlock args,
                                     StringBuffer message) {
    if (!super.validateParameters(args, message)) {
        return false;
    }

    int length = ((double[])args.getObjectParameter(0)).length;
    if (length < 1) {
        message.append(getName() + " " +
                       JaiI18N.getString("SubtractFromConstDescriptor2"));
        return false;
    }

    return true;
}
项目:rastertheque    文件:JAI.java   
/**
 * Creates a <code>RenderedOp</code> that takes 1 <code>RenderedImage</code> source,
 * 5 <code>int</code> parameters and 1 <code>Object</code> parameter.
 *
 * @param opName  The name of the operation.
 * @param src     The <code>RenderedImage</code> src parameter.
 * @param param1  The first <code>int</code> parameter.
 * @param param2  The second <code>int</code> parameter.
 * @param param3  The third <code>int</code> parameter.
 * @param param4  The fourth <code>int</code> parameter.
 * @param param5  The fifth <code>int</code> parameter.
 * @param param6  The <code>Object</code> parameter.
 * @deprecated as of JAI 1.1. Instead use
 *             <code>create(String,ParameterBlock)</code>.
 */
public static RenderedOp create(String opName,
                                RenderedImage src,
                                int param1,
                                int param2,
                                int param3,
                                int param4,
                                int param5,
                                Object param6) {
    ParameterBlock args = new ParameterBlock();
    args.addSource(src);
    args.add(param1);
    args.add(param2);
    args.add(param3);
    args.add(param4);
    args.add(param5);
    args.add(param6);
    return create(opName, args, null);
}
项目:rastertheque    文件:OverlayCRIF.java   
/**
 * Creates a new instance of <code>OverlayOpImage</code>
 * in the rendered layer.
 *
 * @param args   The two source images.
 * @param hints  Optionally contains destination image layout.
 */
public RenderedImage create(ParameterBlock args,
                            RenderingHints renderHints) {
    // Get ImageLayout from renderHints if any.
    ImageLayout layout = RIFUtil.getImageLayoutHint(renderHints);


    return new OverlayOpImage(args.getRenderedSource(0),
                              args.getRenderedSource(1),
                              renderHints,
                              layout);
}
项目:rastertheque    文件:CRIFImpl.java   
/**
 * Returns the bounding box for the output of the operation.  The
 * implementation in this class computes the bounding box as the
 * intersection the bounding boxes of all the (renderable sources).
 *
 * @param paramBlock A <code>ParameterBlock</code> containing the
 *        sources and parameters of the operation.
 * @return A <code>Rectangle2D</code> specifying the bounding box.
 */
public Rectangle2D getBounds2D(ParameterBlock paramBlock) {
    int numSources = paramBlock.getNumSources();

    if (numSources == 0) {
        return null;
    }

    RenderableImage src = paramBlock.getRenderableSource(0);
    Rectangle2D.Float box1 = new Rectangle2D.Float(src.getMinX(),
                                                   src.getMinY(),
                                                   src.getWidth(),
                                                   src.getHeight());

    for (int i = 1; i < numSources; i++) {
        src  = paramBlock.getRenderableSource(i);
        Rectangle2D.Float box2 =
            new Rectangle2D.Float(src.getMinX(), src.getMinY(),
                                  src.getWidth(), src.getHeight());
        box1 = (Rectangle2D.Float)box1.createIntersection(box2);
        if(box1.isEmpty()) {
            break;
        }
    }

    return box1;
}
项目:rastertheque    文件:JAI.java   
/**
 * Creates a <code>RenderedOp</code> that takes 1
 * <code>RenderedImage</code> source and
 * 5 <code>Object</code> parameters.
 *
 * @param opName  The name of the operation.
 * @param src     The <code>RenderedImage</code> src parameter.
 * @param param1  The first <code>Object</code> parameter.
 * @param param2  The second <code>Object</code> parameter.
 * @param param3  The third <code>Object</code> parameter.
 * @param param4  The fourth <code>Object</code> parameter.
 * @param param5  The fifth <code>Object</code> parameter.
 * @deprecated as of JAI 1.1. Instead use
 *             <code>create(String,ParameterBlock)</code>.
 */
public static RenderedOp create(String opName,
                                RenderedImage src,
                                Object param1,
                                Object param2,
                                Object param3,
                                Object param4,
                                Object param5) {
    ParameterBlock args = new ParameterBlock();
    args.addSource(src);
    args.add(param1);
    args.add(param2);
    args.add(param3);
    args.add(param4);
    args.add(param5);
    return create(opName, args, null);
}
项目:rastertheque    文件:JAI.java   
/**
 * Creates a <code>RenderedOp</code> that takes 1 <code>RenderedImage</code> source,
 * 4 <code>float</code> parameters and one <code>Object</code> parameter.
 *
 * @param opName  The name of the operation.
 * @param src     The <code>RenderedImage</code> src parameter.
 * @param param1  The first <code>float</code> parameter.
 * @param param2  The second <code>float</code> parameter.
 * @param param3  The third <code>float</code> parameter.
 * @param param4  The fourth <code>float</code> parameter.
 * @param param5  The <code>Object</code> parameter.
 * @deprecated as of JAI 1.1. Instead use
 *             <code>create(String,ParameterBlock)</code>.
 */
public static RenderedOp create(String opName,
                                RenderedImage src,
                                float param1,
                                float param2,
                                float param3,
                                float param4,
                                Object param5) {
    ParameterBlock args = new ParameterBlock();
    args.addSource(src);
    args.add(param1);
    args.add(param2);
    args.add(param3);
    args.add(param4);
    args.add(param5);
    return create(opName, args, null);
}
项目:rastertheque    文件:JAI.java   
/**
 * Creates a <code>RenderedOp</code> that takes 1
 * <code>RenderedImage</code> source and
 * 6 <code>Object</code> parameters.
 *
 * @param opName  The name of the operation.
 * @param src     The <code>RenderedImage</code> src parameter.
 * @param param1  The first <code>Object</code> parameter.
 * @param param2  The second <code>Object</code> parameter.
 * @param param3  The third <code>Object</code> parameter.
 * @param param4  The fourth <code>Object</code> parameter.
 * @param param5  The fifth <code>Object</code> parameter.
 * @param param6  The sixth <code>Object</code> parameter.
 * @deprecated as of JAI 1.1. Instead use
 *             <code>create(String,ParameterBlock)</code>.
 */
public static RenderedOp create(String opName,
                                RenderedImage src,
                                Object param1,
                                Object param2,
                                Object param3,
                                Object param4,
                                Object param5,
                                Object param6) {
    ParameterBlock args = new ParameterBlock();
    args.addSource(src);
    args.add(param1);
    args.add(param2);
    args.add(param3);
    args.add(param4);
    args.add(param5);
    args.add(param6);
    return create(opName, args, null);
}
项目:rastertheque    文件:BandMergeCRIF.java   
/**
    * Creates a new instance of <code>BandMergeOpImage</code> in the
    * rendered layer. This method satisifies the implementation of RIF.
    *
    * @param paramBlock   The two or more source images to be "BandMerged"
    * together, and their corresponding float array vector. 
    * @param renderHints  Optionally contains destination image layout.     
    */
   public RenderedImage create(ParameterBlock paramBlock,
                               RenderingHints renderHints) {
       // Get ImageLayout from renderHints if any.
       ImageLayout layout = RIFUtil.getImageLayoutHint(renderHints);


// get vector of RenderedImage sources and parameters
Vector sources = paramBlock.getSources();
//Vector params  = paramBlock.getParameters();

return new BandMergeOpImage(sources,
                renderHints,
                layout);

   }
项目:rastertheque    文件:CropCRIF.java   
/**
 * Creates a new instance of <code>CropOpImage</code> in the
 * rendered layer.
 *
 * @param args   The source image and bounding rectangle
 * @param hints  Optionally contains destination image layout.
 */
public RenderedImage create(ParameterBlock args,
                            RenderingHints renderHints) {
    // Get the source image.
    RenderedImage src = (RenderedImage)args.getRenderedSource(0);

    // Get the parameters.
    float originX = args.getFloatParameter(0);
    float originY = args.getFloatParameter(1);
    float width   = args.getFloatParameter(2);
    float height  = args.getFloatParameter(3);

    // Return the OpImage.
    return new CropOpImage(src,
                           originX,
                           originY,
                           width,
                           height);
}
项目:rastertheque    文件:OperationRegistry.java   
/**
    * Constructs and returns a <code>PropertySource</code> suitable for
    * use by a given <code>OperationNode</code>.  The
    * <code>PropertySource</code> includes properties copied from prior
    * nodes as well as those generated at the node itself. Additionally,
    * property suppression is taken into account. The actual
    * implementation of <code>getPropertySource()</code> may make use
    * of deferred execution and caching.
    *
    * @param op the <code>OperationNode</code> requesting its
    *        <code>PropertySource</code>.
    *
    * @throws IllegalArgumentException if op is null.
    *
    * @since JAI 1.1
    */
   public PropertySource getPropertySource(OperationNode op) {

if (op == null)
    throw new IllegalArgumentException(JaiI18N.getString("Generic0"));

       // Get the source Vector from the ParameterBlock.
       ParameterBlock pb = op.getParameterBlock();
Vector pv = (pb == null) ? null : pb.getSources();

       // If the source Vector is null, replace it by a zero-length
       // Vector. This tricks the DescriptorCache into accepting the
       // parameter and the PropertyEnvironment object created in
       // the DescriptorCache works with either a null or zero-length
       // source Vector.
       if(pv == null) {
           pv = new Vector();
       }

return getPropertySource(op.getRegistryModeName(),
             op.getOperationName(), op, pv);
   }
项目:rastertheque    文件:PeriodicShiftCRIF.java   
/**
 * Creates a new instance of <code>PeriodicShiftOpImage</code>
 * in the rendered layer. This method satisfies the
 * implementation of RIF.
 */
public RenderedImage create(ParameterBlock paramBlock,
                            RenderingHints renderHints) {
    // Get ImageLayout from renderHints if any.
    ImageLayout layout = RIFUtil.getImageLayoutHint(renderHints);


    // Get the source image.
    RenderedImage source = paramBlock.getRenderedSource(0);

    // Get the translation parameters.
    int shiftX = paramBlock.getIntParameter(0);
    int shiftY = paramBlock.getIntParameter(1);

    // Return the OpImage.
    return new PeriodicShiftOpImage(source, renderHints, layout, shiftX, shiftY);
}