package uk.co.mmscomputing.device.twain;
import java.util.*;
class TwainArray extends TwainContainer{
// TWON_ARRAY. Container for array of values (a simplified TW_ENUMERATION)
/*
typedef struct {
TW_UINT16 ItemType;
TW_UINT32 NumItems; // How many items in ItemList
TW_UINT8 ItemList[1]; // Array of ItemType values starts here
} TW_ARRAY, FAR * pTW_ARRAY;
*/
int count;
Vector<Object> items=new Vector<Object>();
TwainArray(int cap,byte[] container){ // TW_ARRAY
super(cap,container);
count = jtwain.getINT32(container,2);
for(int i=0,off=6;i<count;i++){
items.add(getObjectAt(container,off));
off+=typeSizes[type];
}
}
/*
public TwainArray(int cap,int type){
super(cap,type);
}
*/
int getType(){return TWON_ARRAY;};
byte[] getBytes(){
int count=items.size();
int len =6+count*typeSizes[type];
byte[] container=new byte[len];
jtwain.setINT16(container,0,type);
jtwain.setINT32(container,2,count);
for(int i=0,off=6;i<count;i++){
setObjectAt(container,off,items.get(i));
off+=typeSizes[type];
}
return container;
}
public Object getCurrentValue()throws TwainIOException{
throw new TwainIOException(getClass().getName()+".getCurrentValue:\n\tnot applicable");
}
public void setCurrentValue(Object obj)throws TwainIOException{
throw new TwainIOException(getClass().getName()+".setCurrentValue:\n\tnot applicable");
}
public Object getDefaultValue()throws TwainIOException{
throw new TwainIOException(getClass().getName()+".getDefaultValue:\n\tnot applicable");
}
public void setDefaultValue(Object obj)throws TwainIOException{
throw new TwainIOException(getClass().getName()+".setDefaultValue:\n\tnot applicable");
}
public Object[] getItems(){return items.toArray();}
public String toString(){
String s=super.toString();
s+="count = "+count+"\n";
Enumeration e=items.elements();
for(int i=0;e.hasMoreElements();i++) {
s+="items["+i+"] = "+e.nextElement()+"\n";
}
return s;
}
}