Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygencapability.c
Go to the documentation of this file.
00001 /* 00002 * Copyright 2000 Corel Corporation 00003 * 00004 * This library is free software; you can redistribute it and/or 00005 * modify it under the terms of the GNU Lesser General Public 00006 * License as published by the Free Software Foundation; either 00007 * version 2.1 of the License, or (at your option) any later version. 00008 * 00009 * This library is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 * Lesser General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU Lesser General Public 00015 * License along with this library; if not, write to the Free Software 00016 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00017 */ 00018 00019 #define NONAMELESSUNION 00020 #define NONAMELESSSTRUCT 00021 00022 #include <stdarg.h> 00023 00024 #include "windef.h" 00025 #include "winbase.h" 00026 #include "twain.h" 00027 #include "twain_i.h" 00028 #include "wine/debug.h" 00029 00030 WINE_DEFAULT_DEBUG_CHANNEL(twain); 00031 00032 TW_UINT16 TWAIN_SaneCapability (activeDS *pSource, pTW_CAPABILITY pCapability, 00033 TW_UINT16 action) 00034 { 00035 TW_UINT16 twCC = TWCC_SUCCESS; 00036 00037 TRACE("capability=%d action=%d\n", pCapability->Cap, action); 00038 00039 switch (pCapability->Cap) 00040 { 00041 case CAP_DEVICEEVENT: 00042 case CAP_ALARMS: 00043 case CAP_ALARMVOLUME: 00044 case ACAP_AUDIOFILEFORMAT: 00045 case ACAP_XFERMECH: 00046 case ICAP_AUTOMATICBORDERDETECTION: 00047 case ICAP_AUTOMATICDESKEW: 00048 case ICAP_AUTODISCARDBLANKPAGES: 00049 case ICAP_AUTOMATICROTATE: 00050 case ICAP_FLIPROTATION: 00051 case CAP_AUTOMATICCAPTURE: 00052 case CAP_TIMEBEFOREFIRSTCAPTURE: 00053 case CAP_TIMEBETWEENCAPTURES: 00054 case CAP_AUTOSCAN: 00055 case CAP_CLEARBUFFERS: 00056 case CAP_MAXBATCHBUFFERS: 00057 case ICAP_BARCODEDETECTIONENABLED: 00058 case ICAP_SUPPORTEDBARCODETYPES: 00059 case ICAP_BARCODEMAXSEARCHPRIORITIES: 00060 case ICAP_BARCODESEARCHPRIORITIES: 00061 case ICAP_BARCODESEARCHMODE: 00062 case ICAP_BARCODEMAXRETRIES: 00063 case ICAP_BARCODETIMEOUT: 00064 case CAP_EXTENDEDCAPS: 00065 case CAP_SUPPORTEDCAPS: 00066 case ICAP_FILTER: 00067 case ICAP_GAMMA: 00068 case ICAP_PLANARCHUNKY: 00069 case ICAP_BITORDERCODES: 00070 case ICAP_CCITTKFACTOR: 00071 case ICAP_COMPRESSION: 00072 case ICAP_JPEGPIXELTYPE: 00073 /*case ICAP_JPEGQUALITY:*/ 00074 case ICAP_PIXELFLAVORCODES: 00075 case ICAP_TIMEFILL: 00076 case CAP_DEVICEONLINE: 00077 case CAP_DEVICETIMEDATE: 00078 case CAP_SERIALNUMBER: 00079 case ICAP_EXPOSURETIME: 00080 case ICAP_FLASHUSED2: 00081 case ICAP_IMAGEFILTER: 00082 case ICAP_LAMPSTATE: 00083 case ICAP_LIGHTPATH: 00084 case ICAP_NOISEFILTER: 00085 case ICAP_OVERSCAN: 00086 case ICAP_PHYSICALHEIGHT: 00087 case ICAP_PHYSICALWIDTH: 00088 case ICAP_UNITS: 00089 case ICAP_ZOOMFACTOR: 00090 case CAP_PRINTER: 00091 case CAP_PRINTERENABLED: 00092 case CAP_PRINTERINDEX: 00093 case CAP_PRINTERMODE: 00094 case CAP_PRINTERSTRING: 00095 case CAP_PRINTERSUFFIX: 00096 case CAP_AUTHOR: 00097 case CAP_CAPTION: 00098 case CAP_TIMEDATE: 00099 case ICAP_AUTOBRIGHT: 00100 case ICAP_BRIGHTNESS: 00101 case ICAP_CONTRAST: 00102 case ICAP_HIGHLIGHT: 00103 case ICAP_ORIENTATION: 00104 case ICAP_ROTATION: 00105 case ICAP_SHADOW: 00106 case ICAP_XSCALING: 00107 case ICAP_YSCALING: 00108 case ICAP_BITDEPTH: 00109 case ICAP_BITDEPTHREDUCTION: 00110 case ICAP_BITORDER: 00111 case ICAP_CUSTHALFTONE: 00112 case ICAP_HALFTONES: 00113 case ICAP_PIXELFLAVOR: 00114 case ICAP_PIXELTYPE: 00115 case ICAP_THRESHOLD: 00116 case CAP_LANGUAGE: 00117 case ICAP_FRAMES: 00118 case ICAP_MAXFRAMES: 00119 case ICAP_SUPPORTEDSIZES: 00120 case CAP_AUTOFEED: 00121 case CAP_CLEARPAGE: 00122 case CAP_FEEDERALIGNMENT: 00123 case CAP_FEEDERENABLED: 00124 case CAP_FEEDERLOADED: 00125 case CAP_FEEDERORDER: 00126 case CAP_FEEDPAGE: 00127 case CAP_PAPERBINDING: 00128 case CAP_PAPERDETECTABLE: 00129 case CAP_REACQUIREALLOWED: 00130 case CAP_REWINDPAGE: 00131 case ICAP_PATCHCODEDETECTIONENABLED: 00132 case ICAP_SUPPORTEDPATCHCODETYPES: 00133 case ICAP_PATCHCODEMAXSEARCHPRIORITIES: 00134 case ICAP_PATCHCODESEARCHPRIORITIES: 00135 case ICAP_PATCHCODESEARCHMODE: 00136 case ICAP_PATCHCODEMAXRETRIES: 00137 case ICAP_PATCHCODETIMEOUT: 00138 case CAP_BATTERYMINUTES: 00139 case CAP_BATTERYPERCENTAGE: 00140 case CAP_POWERDOWNTIME: 00141 case CAP_POWERSUPPLY: 00142 case ICAP_XNATIVERESOLUTION: 00143 case ICAP_XRESOLUTION: 00144 case ICAP_YNATIVERESOLUTION: 00145 case ICAP_YRESOLUTION: 00146 twCC = TWCC_CAPUNSUPPORTED; 00147 break; 00148 case CAP_XFERCOUNT: 00149 /* This is a required capability that every source need to 00150 support but we havev't implemented yet. */ 00151 twCC = TWCC_SUCCESS; 00152 break; 00153 /*case ICAP_COMPRESSION:*/ 00154 case ICAP_IMAGEFILEFORMAT: 00155 case ICAP_TILES: 00156 twCC = TWCC_CAPUNSUPPORTED; 00157 break; 00158 case ICAP_XFERMECH: 00159 twCC = TWAIN_ICAPXferMech (pSource, pCapability, action); 00160 break; 00161 case ICAP_UNDEFINEDIMAGESIZE: 00162 case CAP_CAMERAPREVIEWUI: 00163 case CAP_ENABLEDSUIONLY: 00164 case CAP_INDICATORS: 00165 case CAP_UICONTROLLABLE: 00166 twCC = TWCC_CAPUNSUPPORTED; 00167 break; 00168 default: 00169 twCC = TWRC_FAILURE; 00170 00171 } 00172 00173 return twCC; 00174 } 00175 00176 TW_BOOL TWAIN_OneValueSet (pTW_CAPABILITY pCapability, TW_UINT32 value) 00177 { 00178 pCapability->hContainer = (TW_HANDLE)GlobalAlloc (0, sizeof(TW_ONEVALUE)); 00179 00180 if (pCapability->hContainer) 00181 { 00182 pTW_ONEVALUE pVal = GlobalLock ((HGLOBAL) pCapability->hContainer); 00183 pVal->ItemType = TWTY_UINT32; 00184 pVal->Item = value; 00185 GlobalUnlock ((HGLOBAL) pCapability->hContainer); 00186 return TRUE; 00187 } 00188 else 00189 return FALSE; 00190 } 00191 00192 TW_BOOL TWAIN_OneValueGet (pTW_CAPABILITY pCapability, TW_UINT32 *pValue) 00193 { 00194 pTW_ONEVALUE pVal = GlobalLock ((HGLOBAL) pCapability->hContainer); 00195 00196 if (pVal) 00197 { 00198 *pValue = pVal->Item; 00199 GlobalUnlock ((HGLOBAL) pCapability->hContainer); 00200 return TRUE; 00201 } 00202 else 00203 return FALSE; 00204 } 00205 00206 /* ICAP_XFERMECH */ 00207 TW_UINT16 TWAIN_ICAPXferMech (activeDS *pSource, pTW_CAPABILITY pCapability, 00208 TW_UINT16 action) 00209 { 00210 TRACE("ICAP_XFERMECH\n"); 00211 00212 switch (action) 00213 { 00214 case MSG_GET: 00215 if (pCapability->ConType == TWON_ONEVALUE) 00216 { 00217 if (!TWAIN_OneValueSet (pCapability, pSource->capXferMech)) 00218 return TWCC_LOWMEMORY; 00219 } 00220 break; 00221 case MSG_SET: 00222 if (pCapability->ConType == TWON_ONEVALUE) 00223 { 00224 TW_UINT32 xfermechtemp; 00225 if (!TWAIN_OneValueGet (pCapability, &xfermechtemp)) 00226 return TWCC_LOWMEMORY; 00227 pSource->capXferMech = xfermechtemp; 00228 } 00229 else if (pCapability->ConType == TWON_ENUMERATION) 00230 { 00231 00232 } 00233 break; 00234 case MSG_GETCURRENT: 00235 if (!TWAIN_OneValueSet (pCapability, pSource->capXferMech)) 00236 return TWCC_LOWMEMORY; 00237 break; 00238 case MSG_GETDEFAULT: 00239 if (!TWAIN_OneValueSet (pCapability, TWSX_NATIVE)) 00240 return TWCC_LOWMEMORY; 00241 break; 00242 case MSG_RESET: 00243 pSource->capXferMech = TWSX_NATIVE; 00244 break; 00245 } 00246 return TWCC_SUCCESS; 00247 } Generated on Thu May 24 2012 04:27:09 for ReactOS by
1.7.6.1
|