package uk.co.mmscomputing.device.sane.option; import uk.co.mmscomputing.device.sane.OptionDescriptor; import uk.co.mmscomputing.device.sane.SaneIOException; public class Descriptor extends OptionDescriptor{ String name; /* name of this option (command-line name) */ String title; /* title of this option (single-line) */ String desc; /* description of this option (multi-line) */ int type; /* how are values interpreted? */ int unit; /* what is the (physical) unit? */ int size; int cap; /* capabilities */ public Descriptor( int handle, int no, String name, String title, String desc, int type, int unit, int size, int cap ){ super(handle,no); this.name=name; this.title=title; this.desc=desc; this.type=type; this.unit=unit; this.size=size; this.cap=cap; } protected boolean isWritable(){ return ((cap&SANE_CAP_INACTIVE) != SANE_CAP_INACTIVE) && ((cap&SANE_CAP_SOFT_SELECT) == SANE_CAP_SOFT_SELECT); } // public int getWordValue(){ // return getWordValue(0); // } // public int setWordValue(int val){ // return setWordValue(0,val); // } public int getWordValue(int i){ System.err.println(getClass().getName()+".setWordValue("+i+")\n I shouldn't be here!"); return 0; } public int setWordValue(int i, int val)throws SaneIOException{ System.err.println(getClass().getName()+".setWordValue("+i+","+val+")\n I shouldn't be here!"); return 0; } public String getStringValue(){ return getStringValue(0); } public String getStringValue(int i){ System.err.println(getClass().getName()+".getStringValue()\n I shouldn't be here!"); return ""; } public String setStringValue(String valstr)throws SaneIOException{ return setStringValue(0,valstr); } public String setStringValue(int i, String valstr)throws SaneIOException{ System.err.println(getClass().getName()+".setStringValue("+valstr+")\n I shouldn't be here!"); return ""; } public double convertPixelValue(double resolution, int ival){ double dval=ival; switch(unit){ case SANE_UNIT_PIXEL: break; case SANE_UNIT_MM: dval=(25.4*dval)/resolution; break; default: System.err.println(getClass().getName()+".convertPixelValue: Cannot convert Pixels to "+SANE_UNIT[unit]); break; } return (Math.round(dval*100.0)/100.0); } public double convertPixels2Units(double resolution, int ival){ double dval=ival; switch(unit){ case SANE_UNIT_PIXEL: break; case SANE_UNIT_MM: dval=(25.4*dval)/resolution; break; default: System.err.println(getClass().getName()+".convertPixels2Units: Cannot convert Pixels to "+SANE_UNIT[unit]); break; } return (Math.round(dval*100.0)/100.0); } public int convertUnits2Pixels(double resolution, double dval){ switch(unit){ case SANE_UNIT_PIXEL: break; case SANE_UNIT_MM: dval=(dval*resolution)/25.4; break; default: System.err.println(getClass().getName()+".convertUnits2Pixels:\n\t Cannot convert "+SANE_UNIT[unit]+" to Pixels"); break; } return (int)Math.round(dval); } public double convertMM2Units(double resolution, double dval){ switch(unit){ case SANE_UNIT_PIXEL: dval=Math.round((dval*resolution)/25.4); break; case SANE_UNIT_MM: break; default: System.err.println(getClass().getName()+".convertMM2Units: Cannot convert MM to "+SANE_UNIT[unit]); break; } return dval; } public void setPixelValue(double resolution, int value)throws SaneIOException{ System.err.println(getClass().getName()+".setPixelValue("+resolution+","+value+")\n I shouldn't be here!"); } protected DescriptorPanel gui=null; void signalNewValue(){ if(gui!=null){gui.signalNewValue();} } void signalReloadOptions(){ if(gui!=null){gui.reloadOptions();} } public String getName(){return name;} public int getType(){return type;} public String getTitle(){return title;} public int getUnit(){return unit;} public String toString(){ String s=""; // s+="\nno "+no; s+="\nname "+name; s+="\ntitle "+title; s+="\ndesc "+desc; s+="\ntype "+SANE_TYPE[type]; s+="\nunit "+SANE_UNIT[unit]; s+="\nsize "+size; s+="\ncap 0x"+Integer.toHexString(cap); for(int k=0;k<8;k++){ if(((cap>>k)&0x01)==0x01){ s+="\n "+SANE_CAP[k]; } } return s; } public DescriptorPanel getGUI(){ return new DescriptorPanel(this); } } /* [1] SANE Standard Version 1.03 (Scanner Access Now Easy) 2002-10-10 http://www.sane-project.org */