001 /* 002 * To change this template, choose Tools | Templates 003 * and open the template in the editor. 004 */ 005 package edu.wpi.first.wpilibj.image; 006 007 import com.sun.cldc.jna.Pointer; 008 import edu.wpi.first.wpilibj.image.NIVision.MeasurementType; 009 import java.util.Vector; 010 011 class ParticleFilterCriteria { 012 MeasurementType type; 013 float lower; 014 float upper; 015 boolean outsideRange; 016 017 ParticleFilterCriteria(MeasurementType type, float lower, float upper, boolean outsideRange) { 018 this.type = type; 019 this.lower = lower; 020 this.upper = upper; 021 this.outsideRange = outsideRange; 022 } 023 } 024 025 public class CriteriaCollection { 026 Vector criteria = new Vector(); 027 028 public void addCriteria(MeasurementType type, float lower, float upper, boolean outsideRange) { 029 criteria.addElement(new ParticleFilterCriteria(type, lower, upper, outsideRange)); 030 } 031 032 public int getNumberOfCriteria() { 033 return criteria.size(); 034 } 035 036 public Pointer getCriteriaArray() { 037 Pointer p = new Pointer(criteria.size() * 5 * 4); // 5 elements each 4 bytes 038 for (int i = 0; i < criteria.size(); i++) { 039 ParticleFilterCriteria pfc = (ParticleFilterCriteria) criteria.elementAt(i); 040 p.setInt(i * 20, pfc.type.value); 041 p.setFloat(i * 20 + 4, pfc.lower); 042 p.setFloat(i * 20 + 8, pfc.upper); 043 p.setInt(i * 20 + 12, 0); // always use pixel measurements for now 044 p.setInt(i * 20 + 16, pfc.outsideRange ? 1 : 0); 045 } 046 return p; 047 } 048 } 049