package pl.wroc.pwr.imagechannel.validation; import pl.wroc.pwr.basic.IBooleanOperator; import pl.wroc.pwr.basic.IBooleanOperator2P; import pl.wroc.pwr.imagechannel.IImageChannel; public class Compare implements IBooleanOperator2P { private float maxDelta; public Compare() { this(0); } public Compare(float delta) { this.maxDelta = delta; } public boolean applyValue(IImageChannel channel1, IImageChannel channel2) { if (channel1.getXSize() != channel2.getXSize()) { System.out.println("X size is different."); return false; } if (channel1.getYSize() != channel2.getYSize()) { System.out.println("Y size is different."); return false; } boolean result = true; for (int index = 0; index < channel1.getMaxIndex(); index++) { float delta = Math.abs(channel1.getValue(index) - channel2.getValue(index)); if (delta > this.maxDelta) { System.out.println("Index: " + index + ", value1: " + channel1.getValue(index) + ", value2: " + channel2.getValue(index)); result = false; } } return result; } public Boolean apply(IImageChannel channel1, IImageChannel channel2) { return new Boolean(this.applyValue(channel1, channel2)); } }