/******************************************************************************* * Copyright (c) 2016 Weasis Team and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Nicolas Roduit - initial API and implementation *******************************************************************************/ package org.weasis.core.api.image.op; import java.awt.RenderingHints; import java.awt.image.RenderedImage; import java.awt.image.renderable.ParameterBlock; import java.awt.image.renderable.RenderedImageFactory; import javax.media.jai.ImageLayout; import javax.media.jai.OperationDescriptorImpl; import javax.media.jai.PlanarImage; import org.weasis.core.api.image.util.LayoutUtil; import com.sun.media.jai.util.ImageUtil; public class NotBinaryDescriptor extends OperationDescriptorImpl implements RenderedImageFactory { private static final String resources[][] = { { "GlobalName", "NotBinary" }, //$NON-NLS-1$ //$NON-NLS-2$ { "LocalName", "NotBinary" }, //$NON-NLS-1$ //$NON-NLS-2$ { "Vendor", "" }, //$NON-NLS-1$ //$NON-NLS-2$ { "Description", "Not for binary image (better than use transform colormodel)" }, //$NON-NLS-1$ //$NON-NLS-2$ { "DocURL", "" }, //$NON-NLS-1$ //$NON-NLS-2$ { "Version", "1.0" } //$NON-NLS-1$ //$NON-NLS-2$ }; private static final String[] paramNames = {}; public static final String[] supportedModes = { "rendered" }; //$NON-NLS-1$ private static final Class[] paramClasses = {}; private static final Object[] paramDefaults = {}; public NotBinaryDescriptor() { super(resources, supportedModes, 1, paramNames, paramClasses, paramDefaults, null); } @Override public RenderedImage create(ParameterBlock parameterblock, RenderingHints renderHints) { if (!validateSources(parameterblock)) { return null; } PlanarImage source = (PlanarImage) parameterblock.getRenderedSource(0); if (renderHints == null) { renderHints = LayoutUtil.createBinaryRenderedImage(); } ImageLayout imagelayout = LayoutUtil.getImageLayoutHint(renderHints); return new NotBinaryOpImage(source, renderHints, imagelayout); } public boolean validateSources(ParameterBlock parameterblock) { RenderedImage img = parameterblock.getRenderedSource(0); return (img != null && ImageUtil.isBinary(img.getSampleModel())); } }