package uk.co.mmscomputing.device.sane.option;

import uk.co.mmscomputing.device.sane.SaneIOException;

public class WordDesc extends Descriptor{

  protected int[] values=null;

  public WordDesc(
    int      handle,
    int      no,

    String   name,
    String   title,
    String   desc,
    int      type,
    int      unit,
    int      size,
    int      cap,
    int[]    values
  ){
    super(handle,no,name,title,desc,type,unit,size,cap);
    this.values=values;
  }

  public int getWordValue(int i){
    return values[i];
  }

  public int setWordValue(int i, int val)throws SaneIOException{    
    if(isWritable()){
      values[i]=val;
      int info=setWordArrayControlOption(values);
      if((info&SANE_INFO_INEXACT)==SANE_INFO_INEXACT){
        getWordArrayControlOption(values);
      }
      if((info&SANE_INFO_RELOAD_OPTIONS)==SANE_INFO_RELOAD_OPTIONS){
        signalReloadOptions();
      }
      if((info&SANE_INFO_RELOAD_PARAMS)==SANE_INFO_RELOAD_PARAMS){
        // read parameters only after scan started
      }
    }
    return values[i];
  }

  public String toString(){
    String s=super.toString();
    for(int i=0;i<values.length;i++){
      s+="\n    values["+i+"]= "+values[i];
    }
    return s;
  }
}

