ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

capability.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.