📄 rgbformattest.java
字号:
package net.sf.fmj.test.compat.formats;import java.awt.Dimension;import java.util.HashSet;import java.util.Set;import javax.media.Format;import javax.media.format.RGBFormat;import junit.framework.TestCase;/** * * @author Ken Larson * */public class RGBFormatTest extends TestCase{ public void testToString() { assertEquals(new RGBFormat().toString(), "RGB, -1-bit, Masks=-1:-1:-1, PixelStride=-1, LineStride=-1"); assertEquals(new RGBFormat(new Dimension(1, 2), 2000, Format.byteArray, 2.f, 1, 2, 3, 4, 5, 6, 7, 8).toString(), "RGB, 1x2, FrameRate=2.0, Length=2000, 1-bit, Masks=2:3:4, PixelStride=5, LineStride=6"); assertEquals(new RGBFormat(new Dimension(1, 2), 2000, Format.byteArray, 1.f, 1, 2, 3, 4, 5, 6, 7, 8).toString(), "RGB, 1x2, FrameRate=1.0, Length=2000, 1-bit, Masks=2:3:4, PixelStride=5, LineStride=6"); assertEquals(new RGBFormat(new Dimension(1, 2), 2000, Format.byteArray, -1.f, 1, 2, 3, 4, 5, 6, 7, 8).toString(), "RGB, 1x2, Length=2000, 1-bit, Masks=2:3:4, PixelStride=5, LineStride=6"); assertEquals(new RGBFormat(new Dimension(1, 2), -1, Format.byteArray, -1.f, 1, 2, 3, 4, 5, 6, 7, 8).toString(), "RGB, 1x2, 1-bit, Masks=2:3:4, PixelStride=5, LineStride=6"); //System.out.println(new RGBFormat(new Dimension(1, 2), 2000, Format.byteArray, -1.f, 1, 2, 3, 4, 5, 6, 7, 8)); assertEquals(new RGBFormat(new Dimension(1, 2), 2000, Format.byteArray, 1.f, 1, 2, 3, 4, 5, 6, 1, 1).toString(), "RGB, 1x2, FrameRate=1.0, Length=2000, 1-bit, Masks=2:3:4, PixelStride=5, LineStride=6, Flipped"); assertEquals(new RGBFormat(new Dimension(1, 2), 2000, Format.byteArray, 1.f, 1, 2, 3, 4, 5, 6, 7, 0).toString(), "RGB, 1x2, FrameRate=1.0, Length=2000, 1-bit, Masks=2:3:4, PixelStride=5, LineStride=6"); assertEquals(new RGBFormat(new Dimension(1, 2), 2000, Format.byteArray, 30.00003f, 1, 2, 3, 4, 5, 6, 7, 0).toString(), "RGB, 1x2, FrameRate=30.0, Length=2000, 1-bit, Masks=2:3:4, PixelStride=5, LineStride=6"); assertEquals(new RGBFormat(new Dimension(1, 2), 2000, Format.byteArray, 14.999992f, 1, 2, 3, 4, 5, 6, 7, 0).toString(), "RGB, 1x2, FrameRate=14.9, Length=2000, 1-bit, Masks=2:3:4, PixelStride=5, LineStride=6"); } public void testConstructors() { assertEquals(new RGBFormat().getBitsPerPixel(), -1); assertEquals(new RGBFormat().getEncoding(), "rgb"); assertEquals(new RGBFormat().getBlueMask(), -1); assertEquals(new RGBFormat().getDataType(), null); assertEquals(new RGBFormat().getEndian(), -1); assertEquals(new RGBFormat().getFlipped(), -1); assertEquals(new RGBFormat().getFrameRate(), -1.f); assertEquals(new RGBFormat().getGreenMask(), -1); assertEquals(new RGBFormat().getLineStride(), -1); assertEquals(new RGBFormat().getMaxDataLength(), -1); assertEquals(new RGBFormat().getPixelStride(), -1); assertEquals(new RGBFormat().getRedMask(), -1); assertEquals(new RGBFormat().getSize(), null); { final RGBFormat f2 = new RGBFormat(new Dimension(1, 2), 2000, Format.byteArray, 2.f, 1, 2, 3, 4, 5, 6, 7, 8); assertEquals(f2.getBitsPerPixel(), 1); assertEquals(f2.getEncoding(), "rgb"); assertEquals(f2.getBlueMask(), 4); assertEquals(f2.getDataType(), byte[].class); assertEquals(f2.getEndian(), 8); assertEquals(f2.getFlipped(), 7); assertEquals(f2.getFrameRate(), 2.f); assertEquals(f2.getGreenMask(), 3); assertEquals(f2.getLineStride(), 6); assertEquals(f2.getMaxDataLength(), 2000); assertEquals(f2.getPixelStride(), 5); assertEquals(f2.getRedMask(), 2); assertEquals(f2.getSize(), new Dimension(1, 2)); final RGBFormat f3 = (RGBFormat) f2.relax(); assertEquals(f3.getBitsPerPixel(), 1); assertEquals(f3.getEncoding(), "rgb"); assertEquals(f3.getBlueMask(), 4); assertEquals(f3.getDataType(), byte[].class); assertEquals(f3.getEndian(), 8); assertEquals(f3.getFlipped(), 7); assertEquals(f3.getFrameRate(), -1.f); assertEquals(f3.getGreenMask(), 3); assertEquals(f3.getLineStride(), -1); assertEquals(f3.getMaxDataLength(), -1); assertEquals(f3.getPixelStride(), -1); assertEquals(f3.getRedMask(), 2); assertEquals(f3.getSize(), null); } { final Dimension d = new Dimension(1, 2); final RGBFormat f2 = new RGBFormat(d, 2000, Format.byteArray, 2.f, 1, 2, 3, 4); assertEquals(f2.getBitsPerPixel(), 1); assertEquals(f2.getEncoding(), "rgb"); assertEquals(f2.getBlueMask(), 4); assertEquals(f2.getDataType(), byte[].class); assertEquals(f2.getEndian(), -1); assertEquals(f2.getFlipped(), 0); // strange, this should be -1, maybe there is some kind of calculation. assertEquals(f2.getFrameRate(), 2.f); assertEquals(f2.getGreenMask(), 3); assertEquals(f2.getLineStride(), 0); // strange, this should be -1, maybe there is some kind of calculation. assertEquals(f2.getMaxDataLength(), 2000); assertEquals(f2.getPixelStride(), 0); // strange, this should be -1, maybe there is some kind of calculation. assertEquals(f2.getRedMask(), 2); assertEquals(f2.getSize(), new Dimension(1, 2)); assertTrue(f2.getSize() != d); assertEquals(f2.getSize(), d); } // we need to vary some of the params of this constructor to see how the others are derived. if (true) { final int[] redMasks = new int[] {-1, 0xff, 0xff00, 0xff0000}; final int[] greenMasks = new int[] {-1, 0xff, 0xff00, 0xff0000}; final int[] blueMasks = new int[] {-1, 0xff, 0xff00, 0xff0000}; final int[] lengths = new int[] {-1, 2000}; final Dimension[] sizes = new Dimension[] {null, new Dimension(320, 200), new Dimension(321, 201), new Dimension(322, 202), new Dimension(640, 480)}; final Class[] dataTypes = new Class[] {null, byte[].class, short[].class, int[].class}; final float[] frameRates = new float[] {-1.f, 1.f, 2.f}; final int[] bitsPerPixels = new int[] {-1, 1, 2, 4, 5, 6, 7, 8, 10, 12, 16, 24, 32}; final Set/*<Integer>*/ possibleEndians = new HashSet/*<Integer>*/(); possibleEndians.add(new Integer(-1)); possibleEndians.add(new Integer(1)); final Set/*<Integer>*/ possibleFlippeds = new HashSet/*<Integer>*/(); possibleFlippeds.add(new Integer(0)); final Set/*<Integer>*/ possibleLineStrides = new HashSet/*<Integer>*/(); possibleLineStrides.add(new Integer(-1)); possibleLineStrides.add(new Integer(0)); for (int i = 0; i < sizes.length; ++i) { final Dimension size = sizes[i]; if (size == null) continue; possibleLineStrides.add(new Integer(size.width)); possibleLineStrides.add(new Integer(size.width * 2)); possibleLineStrides.add(new Integer(size.width * 3)); possibleLineStrides.add(new Integer(size.width * 4)); } final Set/*<Integer>*/ possiblePixelStrides = new HashSet/*<Integer>*/(); possiblePixelStrides.add(new Integer(-1)); possiblePixelStrides.add(new Integer(0)); possiblePixelStrides.add(new Integer(1)); possiblePixelStrides.add(new Integer(2)); possiblePixelStrides.add(new Integer(3)); possiblePixelStrides.add(new Integer(4)); for (int i1 = 0; i1 < lengths.length; ++i1) { final int length = lengths[i1]; for (int i2 = 0; i2 < redMasks.length; ++i2) { final int redMask = redMasks[i2]; for (int i3 = 0; i3 < greenMasks.length; ++i3) { final int greenMask = greenMasks[i3]; for (int i4 = 0; i4 < blueMasks.length; ++i4) { final int blueMask = blueMasks[i4]; for (int i5 = 0; i5 < sizes.length; ++i5) { final Dimension size = sizes[i5]; for (int i6 = 0; i6 < dataTypes.length; ++i6) { final Class dataType = dataTypes[i6]; for (int i7 = 0; i7 < frameRates.length; ++i7) { final float frameRate = frameRates[i7]; for (int i8 = 0; i8 < bitsPerPixels.length; ++i8) { final int bitsPerPixel = bitsPerPixels[i8]; final RGBFormat f2 = new RGBFormat(size, length, dataType, frameRate, bitsPerPixel, redMask, greenMask, blueMask); assertEquals(f2.getBitsPerPixel(), bitsPerPixel); assertEquals(f2.getEncoding(), "rgb"); assertEquals(f2.getBlueMask(), blueMask); assertEquals(f2.getDataType(), dataType); assertEquals(f2.getFrameRate(), frameRate); assertEquals(f2.getGreenMask(), greenMask); assertEquals(f2.getMaxDataLength(), length); assertEquals(f2.getRedMask(), redMask); assertEquals(f2.getSize(), size); // values that seem to vary or are unspecified: if (!possibleEndians.contains(new Integer(f2.getEndian()))) { System.err.println("getEndian: " + f2.getEndian()); //assertTrue(false); } if (!possibleFlippeds.contains(new Integer(f2.getFlipped()))) { System.err.println("getFlipped: " + f2.getFlipped()); //assertTrue(false); } if (!possibleLineStrides.contains(new Integer(f2.getLineStride()))) { System.err.println("getLineStride: " + f2.getLineStride()); //assertTrue(false); } if (!possiblePixelStrides.contains(new Integer(f2.getPixelStride()))) { System.err.println("getPixelStride: " + f2.getPixelStride()); //assertTrue(false); } } } } } } } } } for (int i1 = 0; i1 < lengths.length; ++i1) { final int length = lengths[i1]; for (int i2 = 0; i2 < redMasks.length; ++i2) { final int redMask = redMasks[i2]; for (int i3 = 0; i3 < greenMasks.length; ++i3) { final int greenMask = greenMasks[i3]; for (int i4 = 0; i4 < blueMasks.length; ++i4) { final int blueMask = blueMasks[i4]; for (int i5 = 0; i5 < sizes.length; ++i5) { final Dimension size = sizes[i5]; for (int i6 = 0; i6 < dataTypes.length; ++i6) { final Class dataType = dataTypes[i6]; for (int i7 = 0; i7 < frameRates.length; ++i7) { final float frameRate = frameRates[i7]; for (int i8 = 0; i8 < bitsPerPixels.length; ++i8) { final int bitsPerPixel = bitsPerPixels[i8]; final RGBFormat f2 = new RGBFormat(size, length, dataType, frameRate, bitsPerPixel, redMask, greenMask, blueMask); // see if length affects - DOES NOT.: { final RGBFormat f1 = new RGBFormat(size, -1, dataType, frameRate, bitsPerPixel, redMask, greenMask, blueMask); assertEquals(f2.getBitsPerPixel(), f1.getBitsPerPixel()); assertEquals(f2.getEncoding(), f1.getEncoding()); assertEquals(f2.getBlueMask(), f1.getBlueMask()); assertEquals(f2.getDataType(), f1.getDataType()); assertEquals(f2.getFrameRate(), f1.getFrameRate()); assertEquals(f2.getGreenMask(), f1.getGreenMask()); //assertEquals(f2.getMaxDataLength(), f1.getMaxDataLength()); assertEquals(f2.getRedMask(), f1.getRedMask()); assertEquals(f2.getSize(), f1.getSize()); assertEquals(f2.getEndian(), f1.getEndian()); assertEquals(f2.getFlipped(), f1.getFlipped()); assertEquals(f2.getLineStride(), f1.getLineStride()); assertEquals(f2.getPixelStride(), f1.getPixelStride()); } // see if redMask affects - DOES NOT.: { final RGBFormat f1 = new RGBFormat(size, length, dataType, frameRate, bitsPerPixel, -1, greenMask, blueMask); assertEquals(f2.getBitsPerPixel(), f1.getBitsPerPixel()); assertEquals(f2.getEncoding(), f1.getEncoding()); assertEquals(f2.getBlueMask(), f1.getBlueMask()); assertEquals(f2.getDataType(), f1.getDataType()); assertEquals(f2.getFrameRate(), f1.getFrameRate()); assertEquals(f2.getGreenMask(), f1.getGreenMask()); assertEquals(f2.getMaxDataLength(), f1.getMaxDataLength()); //assertEquals(f2.getRedMask(), f1.getRedMask()); assertEquals(f2.getSize(), f1.getSize()); assertEquals(f2.getEndian(), f1.getEndian()); assertEquals(f2.getFlipped(), f1.getFlipped()); assertEquals(f2.getLineStride(), f1.getLineStride()); assertEquals(f2.getPixelStride(), f1.getPixelStride()); } // see if greenMask affects - DOES NOT.: { final RGBFormat f1 = new RGBFormat(size, length, dataType, frameRate, bitsPerPixel, redMask, -1, blueMask); assertEquals(f2.getBitsPerPixel(), f1.getBitsPerPixel()); assertEquals(f2.getEncoding(), f1.getEncoding()); assertEquals(f2.getBlueMask(), f1.getBlueMask()); assertEquals(f2.getDataType(), f1.getDataType()); assertEquals(f2.getFrameRate(), f1.getFrameRate()); //assertEquals(f2.getGreenMask(), f1.getGreenMask()); assertEquals(f2.getMaxDataLength(), f1.getMaxDataLength()); assertEquals(f2.getRedMask(), f1.getRedMask()); assertEquals(f2.getSize(), f1.getSize()); assertEquals(f2.getEndian(), f1.getEndian()); assertEquals(f2.getFlipped(), f1.getFlipped()); assertEquals(f2.getLineStride(), f1.getLineStride()); assertEquals(f2.getPixelStride(), f1.getPixelStride()); } // see if blueMask affects - DOES NOT.: { final RGBFormat f1 = new RGBFormat(size, length, dataType, frameRate, bitsPerPixel, redMask, greenMask, -1); assertEquals(f2.getBitsPerPixel(), f1.getBitsPerPixel()); assertEquals(f2.getEncoding(), f1.getEncoding()); //assertEquals(f2.getBlueMask(), f1.getBlueMask()); assertEquals(f2.getDataType(), f1.getDataType()); assertEquals(f2.getFrameRate(), f1.getFrameRate()); assertEquals(f2.getGreenMask(), f1.getGreenMask()); assertEquals(f2.getMaxDataLength(), f1.getMaxDataLength()); assertEquals(f2.getRedMask(), f1.getRedMask()); assertEquals(f2.getSize(), f1.getSize()); assertEquals(f2.getEndian(), f1.getEndian()); assertEquals(f2.getFlipped(), f1.getFlipped()); assertEquals(f2.getLineStride(), f1.getLineStride()); assertEquals(f2.getPixelStride(), f1.getPixelStride()); } // see if size affects - affects line stride
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -