/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.demo.sanednetservice;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.demo.scannerservice.Scanner;
import uk.org.jsane.JSane_Base.JSane_Base_Device;
import uk.org.jsane.JSane_Base.JSane_Base_Option_Type_Descriptor;
import uk.org.jsane.JSane_Base.JSane_Base_Type_Group;
import uk.org.jsane.JSane_Exceptions.JSane_Exception;
import uk.org.jsane.JSane_Net.JSane_Net_Constraint_String_List;
import uk.org.jsane.JSane_Net.JSane_Net_Constraint_Word_List;
import uk.org.jsane.JSane_Net.JSane_Net_Type_String;
import uk.org.jsane.JSane_Net.JSane_Net_Type_Word;
/**
*
* @author edwin
*/
public class SanedNetScanner implements Scanner {
private String name;
private List<Double> listResolution;
private List<String> listModes=null;
@Override
public String toString() {
return name;
}
SanedNetScanner(JSane_Base_Device device) {
try {
name = device.getName();
int options = device.getNumberOptions();
for (int loop = 0; loop < options; ++loop) {
JSane_Base_Option_Type_Descriptor option = device.getOption(loop);
System.out.println(option);
if (!(option.getValueType() instanceof JSane_Base_Type_Group)) {
System.out.println(device.getOption(loop).getValue());
}
}
JSane_Base_Option_Type_Descriptor modeOption = device.getOption("mode");
JSane_Net_Constraint_String_List modeListe=(JSane_Net_Constraint_String_List) modeOption.getConstraint();
listModes=new ArrayList<String>();
for(Iterator<JSane_Net_Type_String> it=modeListe.getList().iterator();it.hasNext();){
JSane_Net_Type_String mode=it.next();
listModes.add(mode.getString());
}
JSane_Base_Option_Type_Descriptor resolutionOption = device.getOption("resolution");
JSane_Net_Constraint_Word_List resList = (JSane_Net_Constraint_Word_List) resolutionOption.getConstraint();
Vector resolutions = resList.getList();
this.listResolution = new ArrayList<Double>(resolutions.size());
for (int idx = 0; idx < resolutions.size(); idx++) {
final int r = ((JSane_Net_Type_Word) resolutions.get(idx)).getValue();
listResolution.add((double)r);
}
} catch (JSane_Exception ex) {
Logger.getLogger(SanedNetScanner.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public List<Double> getSupportedResolutions() {
return listResolution;
}
@Override
public List<Integer> getSupportedBitDepth() {
return new ArrayList<Integer>();
}
@Override
public List<String> getSupportedModes() {
return listModes;
}
}