Java/2D Graphics GUI/JAI
Содержание
Check Alignment Descriptor
<source lang="java"> /* Java Media APIs: Cross-Platform Imaging, Media and Visualization Alejandro Terrazas Sams, Published November 2002, ISBN 0672320940
- /
import javax.media.jai.OperationDescriptorImpl; import javax.media.jai.registry.RenderedRegistryMode; public class CheckAlignmentDescriptor extends OperationDescriptorImpl {
private static final String[] paramNames = { "samplingPeriod" }; private static final Object[] paramDefaults = { new Integer(1) }; private static final Class[] paramClasses = { Integer.class }; private static final int numSources = 2; private static final String[] supportedModes = { "rendered" }; private static final Object[] validParamValues = { new javax.media.jai.util.Range( Integer.class, new Integer(1), new Integer(Integer.MAX_VALUE)) }; private static final String[][] resources = { { "GlobalName", "CheckAlignment" }, { "LocalName", "CheckAlignment" }, { "Vender", "Ostuni" }, { "Description", "Provides Visual Alignment Check of Two Images" }, { "DocURL", "none" }, { "Version", "Beta" }, }; public CheckAlignmentDescriptor() { super(resources, supportedModes, numSources, paramNames, paramClasses, paramDefaults, validParamValues); }
}
</source>
Check AlignmentOpImage
<source lang="java"> /* Java Media APIs: Cross-Platform Imaging, Media and Visualization Alejandro Terrazas Sams, Published November 2002, ISBN 0672320940
- /
import javax.media.jai.ImageLayout; import javax.media.jai.PointOpImage; import java.awt.image.RenderedImage; import java.awt.image.Raster; import java.awt.image.WritableRaster; public class CheckAlignmentOpImage extends PointOpImage {
public CheckAlignmentOpImage(RenderedImage s1, RenderedImage s2, int sp, ImageLayout layout, java.util.Map configuration, boolean cobbleSources) { super(s1, s2, layout, configuration, cobbleSources); source1 = s1; source2 = s2; samplingPeriod = sp; } public Raster computeTile(int x, int y) { Raster r1 = source1.getTile(x, y); Raster r2 = source2.getTile(x, y); int xBounds = r1.getWidth(); if (r2.getWidth() < xBounds) xBounds = r2.getWidth(); int yBounds = r1.getHeight(); if (r2.getHeight() < yBounds) yBounds = r2.getHeight(); WritableRaster wr; wr = r1.createCompatibleWritableRaster(xBounds, yBounds); int tmpi; int tmpj; for (int i = 0; i < wr.getWidth(); i++) for (int j = 0; j < wr.getHeight(); j++) { tmpi = i / samplingPeriod; tmpj = j / samplingPeriod; if ((tmpi % 2 == 0) && (tmpj % 2 == 0)) wr.setDataElements(i, j, r2.getDataElements(i, j, null)); else if ((tmpi % 2 != 0) && (tmpj % 2 != 0)) wr.setDataElements(i, j, r2.getDataElements(i, j, null)); else wr.setDataElements(i, j, r1.getDataElements(i, j, null)); } return wr; } private RenderedImage source1, source2; private int samplingPeriod;
}
</source>
Check Alignment RIF
<source lang="java"> import java.awt.image.RenderedImage; import java.awt.image.renderable.ParameterBlock; import java.awt.image.renderable.RenderedImageFactory; import java.awt.RenderingHints; import javax.media.jai.ImageLayout; public class CheckAlignmentRIF implements RenderedImageFactory {
public CheckAlignmentRIF() { } public RenderedImage create(ParameterBlock paramBlock, RenderingHints renderingHints) { RenderedImage source1 = paramBlock.getRenderedSource(0); RenderedImage source2 = paramBlock.getRenderedSource(1); int samplingPeriod = paramBlock.getIntParameter(0); ImageLayout layout = null; return new CheckAlignmentOpImage(source1, source2, samplingPeriod, layout, renderingHints, false); }
}
</source>
Lists all allowable JAI operations
<source lang="java"> import javax.media.jai.JAI; import javax.media.jai.OperationRegistry; import javax.media.jai.RegistryMode; public class ListRegistry {
public ListRegistry() { or = JAI.getDefaultInstance().getOperationRegistry(); String[] modeNames = RegistryMode.getModeNames(); String[] descriptorNames; for (int i = 0; i < modeNames.length; i++) { System.out.println("For registry mode: " + modeNames[i]); descriptorNames = or.getDescriptorNames(modeNames[i]); for (int j = 0; j < descriptorNames.length; j++) { System.out.print("\tRegistered Operator: "); System.out.println(descriptorNames[j]); } } } public static void main(String[] args) { new ListRegistry(); } private OperationRegistry or;
}
</source>