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

ds_ctrl.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 //#include "config.h"
00020 
00021 #ifdef HAVE_UNISTD_H
00022 # include <unistd.h>
00023 #endif
00024 #include <stdlib.h>
00025 #include "twain.h"
00026 #include "twain_i.h"
00027 #include "wine/debug.h"
00028 
00029 WINE_DEFAULT_DEBUG_CHANNEL(twain);
00030 
00031 /* DG_CONTROL/DAT_CAPABILITY/MSG_GET */
00032 TW_UINT16 TWAIN_CapabilityGet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00033                                TW_MEMREF pData)
00034 {
00035     TW_UINT16 twRC = TWRC_SUCCESS, twCC = TWCC_SUCCESS;
00036     pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
00037     activeDS *pSource = TWAIN_LookupSource (pDest);
00038 
00039     TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_GET\n");
00040 
00041     if (!pDest)
00042     {
00043         twRC = TWRC_FAILURE;
00044         DSM_twCC = TWCC_BADDEST;
00045     }
00046     else if (pSource->currentState < 4 || pSource->currentState > 7)
00047     {
00048         twRC = TWRC_FAILURE;
00049         pSource->twCC = TWCC_SEQERROR;
00050     }
00051     else
00052     {
00053         twCC = TWAIN_SaneCapability (pSource, pCapability, MSG_GET);
00054         twRC = (twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
00055         pSource->twCC = twCC;
00056     }
00057 
00058     return twRC;
00059 }
00060 
00061 /* DG_CONTROL/DAT_CAPABILITY/MSG_GETCURRENT */
00062 TW_UINT16 TWAIN_CapabilityGetCurrent (pTW_IDENTITY pOrigin,
00063                                       pTW_IDENTITY pDest,TW_MEMREF pData)
00064 {
00065     TW_UINT16 twRC = TWRC_SUCCESS, twCC = TWCC_SUCCESS;
00066     pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
00067     activeDS *pSource = TWAIN_LookupSource (pDest);
00068 
00069     TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_GETCURRENT\n");
00070 
00071     if (!pSource)
00072     {
00073         twRC = TWRC_FAILURE;
00074         DSM_twCC = TWCC_BADDEST;
00075     }
00076     else if (pSource->currentState < 4 || pSource->currentState > 7)
00077     {
00078         twRC = TWRC_FAILURE;
00079         pSource->twCC = TWCC_SEQERROR;
00080     }
00081     else
00082     {
00083         twCC = TWAIN_SaneCapability (pSource, pCapability, MSG_GETCURRENT);
00084         twRC = (twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
00085         pSource->twCC = twCC;
00086     }
00087 
00088     return twRC;
00089 }
00090 
00091 /* DG_CONTROL/DAT_CAPABILITY/MSG_GETDEFAULT */
00092 TW_UINT16 TWAIN_CapabilityGetDefault (pTW_IDENTITY pOrigin,
00093                                       pTW_IDENTITY pDest, TW_MEMREF pData)
00094 {
00095     TW_UINT16 twRC = TWRC_SUCCESS, twCC = TWCC_SUCCESS;
00096     pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
00097     activeDS *pSource = TWAIN_LookupSource (pDest);
00098 
00099     TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_GETDEFAULT\n");
00100 
00101     if (!pDest)
00102     {
00103         twRC = TWRC_FAILURE;
00104         DSM_twCC = TWCC_BADDEST;
00105     }
00106     else if (pSource->currentState < 4 || pSource->currentState > 7)
00107     {
00108         twRC = TWRC_FAILURE;
00109         pSource->twCC = TWCC_SEQERROR;
00110     }
00111     else
00112     {
00113         twCC = TWAIN_SaneCapability (pSource, pCapability, MSG_GETDEFAULT);
00114         twRC = (twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
00115         pSource->twCC = twCC;
00116     }
00117 
00118     return twRC;
00119 }
00120 
00121 /* DG_CONTROL/DAT_CAPABILITY/MSG_QUERYSUPPORT */
00122 TW_UINT16 TWAIN_CapabilityQuerySupport (pTW_IDENTITY pOrigin,
00123                                         pTW_IDENTITY pDest, TW_MEMREF pData)
00124 {
00125     FIXME ("stub!\n");
00126 
00127     return TWRC_FAILURE;
00128 }
00129 
00130 /* DG_CONTROL/DAT_CAPABILITY/MSG_RESET */
00131 TW_UINT16 TWAIN_CapabilityReset (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00132                                  TW_MEMREF pData)
00133 {
00134     TW_UINT16 twRC = TWRC_SUCCESS, twCC = TWCC_SUCCESS;
00135     pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
00136     activeDS *pSource = TWAIN_LookupSource (pDest);
00137 
00138     TRACE("DG_CONTROL/DAT_CAPABILITY/MSG_RESET\n");
00139 
00140     if (!pDest)
00141     {
00142         twRC = TWRC_FAILURE;
00143         DSM_twCC = TWCC_BADDEST;
00144     }
00145     else if (pSource->currentState < 4 || pSource->currentState > 7)
00146     {
00147         twRC = TWRC_FAILURE;
00148         pSource->twCC = TWCC_SEQERROR;
00149     }
00150     else
00151     {
00152         twCC = TWAIN_SaneCapability (pSource, pCapability, MSG_RESET);
00153         twRC = (twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
00154         pSource->twCC = twCC;
00155     }
00156 
00157     return twRC;
00158 }
00159 
00160 /* DG_CONTROL/DAT_CAPABILITY/MSG_SET */
00161 TW_UINT16 TWAIN_CapabilitySet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00162                                TW_MEMREF pData)
00163 {
00164     TW_UINT16 twRC = TWRC_SUCCESS, twCC = TWCC_SUCCESS;
00165     pTW_CAPABILITY pCapability = (pTW_CAPABILITY) pData;
00166     activeDS *pSource = TWAIN_LookupSource (pDest);
00167 
00168     TRACE ("DG_CONTROL/DAT_CAPABILITY/MSG_SET\n");
00169 
00170     if (!pSource)
00171     {
00172         twRC = TWRC_FAILURE;
00173         DSM_twCC = TWCC_BADDEST;
00174     }
00175     else if (pSource->currentState != 4)
00176     {
00177         twRC = TWRC_FAILURE;
00178         pSource->twCC = TWCC_SEQERROR;
00179     }
00180     else
00181     {
00182         twCC = TWAIN_SaneCapability (pSource, pCapability, MSG_SET);
00183         twRC = (twCC == TWCC_SUCCESS)?TWRC_SUCCESS:TWRC_FAILURE;
00184         pSource->twCC = twCC;
00185     }
00186     return twRC;
00187 }
00188 
00189 /* DG_CONTROL/DAT_CUSTOMDSDATA/MSG_GET */
00190 TW_UINT16 TWAIN_CustomDSDataGet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00191                                 TW_MEMREF pData)
00192 {
00193     FIXME ("stub!\n");
00194 
00195     return TWRC_FAILURE;
00196 }
00197 
00198 /* DG_CONTROL/DAT_CUSTOMDSDATA/MSG_SET */
00199 TW_UINT16 TWAIN_CustomDSDataSet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00200                                  TW_MEMREF pData)
00201 {
00202     FIXME ("stub!\n");
00203 
00204     return TWRC_FAILURE;
00205 }
00206 
00207 /* DG_CONTROL/DAT_FILESYSTEM/MSG_AUTOMATICCAPTUREDIRECTORY */
00208 TW_UINT16 TWAIN_AutomaticCaptureDirectory (pTW_IDENTITY pOrigin,
00209                                            pTW_IDENTITY pDest,
00210                                            TW_MEMREF pData)
00211 {
00212     FIXME ("stub!\n");
00213 
00214     return TWRC_FAILURE;
00215 }
00216 
00217 /* DG_CONTROL/DAT_FILESYSTEM/MSG_CHANGEDIRECTORY */
00218 TW_UINT16 TWAIN_ChangeDirectory (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00219                                  TW_MEMREF pData)
00220 {
00221     FIXME ("stub!\n");
00222 
00223     return TWRC_FAILURE;
00224 }
00225 
00226 /* DG_CONTROL/DAT_FILESYSTEM/MSG_COPY */
00227 TW_UINT16 TWAIN_FileSystemCopy (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00228                                 TW_MEMREF pData)
00229 {
00230     FIXME ("stub!\n");
00231 
00232     return TWRC_FAILURE;
00233 }
00234 
00235 /* DG_CONTROL/DAT_FILESYSTEM/MSG_CREATEDIRECTORY */
00236 TW_UINT16 TWAIN_CreateDirectory (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00237                                  TW_MEMREF pData)
00238 {
00239     FIXME ("stub!\n");
00240 
00241     return TWRC_FAILURE;
00242 }
00243 
00244 /* DG_CONTROL/DAT_FILESYSTEM/MSG_DELETE */
00245 TW_UINT16 TWAIN_FileSystemDelete (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00246                                   TW_MEMREF pData)
00247 {
00248     FIXME ("stub!\n");
00249 
00250     return TWRC_FAILURE;
00251 }
00252 
00253 /* DG_CONTROL/DAT_FILESYSTEM/MSG_FORMATMEDIA */
00254 TW_UINT16 TWAIN_FormatMedia (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00255                              TW_MEMREF pData)
00256 {
00257     FIXME ("stub!\n");
00258 
00259     return TWRC_FAILURE;
00260 }
00261 
00262 /* DG_CONTROL/DAT_FILESYSTEM/MSG_GETCLOSE */
00263 TW_UINT16 TWAIN_FileSystemGetClose (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00264                                     TW_MEMREF pData)
00265 {
00266     FIXME ("stub!\n");
00267 
00268     return TWRC_FAILURE;
00269 }
00270 
00271 /* DG_CONTROL/DAT_FILESYSTEM/MSG_GETFIRSTFILE */
00272 TW_UINT16 TWAIN_FileSystemGetFirstFile (pTW_IDENTITY pOrigin,
00273                                         pTW_IDENTITY pDest,
00274                                         TW_MEMREF pData)
00275 {
00276     FIXME ("stub!\n");
00277 
00278     return TWRC_FAILURE;
00279 }
00280 
00281 /* DG_CONTROL/DAT_FILESYSTEM/MSG_GETINFO */
00282 TW_UINT16 TWAIN_FileSystemGetInfo (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00283                                    TW_MEMREF pData)
00284 {
00285     FIXME ("stub!\n");
00286 
00287     return TWRC_FAILURE;
00288 }
00289 
00290 /* DG_CONTROL/DAT_FILESYSTEM/MSG_GETNEXTFILE */
00291 TW_UINT16 TWAIN_FileSystemGetNextFile (pTW_IDENTITY pOrigin,
00292                                        pTW_IDENTITY pDest,
00293                                        TW_MEMREF pData)
00294 {
00295     FIXME ("stub!\n");
00296 
00297     return TWRC_FAILURE;
00298 }
00299 
00300 /* DG_CONTROL/DAT_FILESYSTEM/MSG_RENAME */
00301 TW_UINT16 TWAIN_FileSystemRename (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00302                                   TW_MEMREF pData)
00303 {
00304     FIXME ("stub!\n");
00305 
00306     return TWRC_FAILURE;
00307 }
00308 
00309 /* DG_CONTROL/DAT_EVENT/MSG_PROCESSEVENT */
00310 TW_UINT16 TWAIN_ProcessEvent (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00311                               TW_MEMREF pData)
00312 {
00313     TW_UINT16 twRC = TWRC_SUCCESS;
00314     pTW_EVENT pEvent = (pTW_EVENT) pData;
00315     activeDS *pSource = TWAIN_LookupSource (pDest);
00316 
00317     TRACE("DG_CONTROL/DAT_EVENT/MSG_PROCESSEVENT\n");
00318 
00319     if (!pSource)
00320     {
00321          twRC = TWRC_FAILURE;
00322          DSM_twCC = TWCC_BADDEST;
00323     }
00324     else if (pSource->currentState < 5 || pSource->currentState > 7)
00325     {
00326         twRC = TWRC_FAILURE;
00327         pSource->twCC = TWCC_SEQERROR;
00328     }
00329     else
00330     {
00331         if (pSource->pendingEvent.TWMessage != MSG_NULL)
00332         {
00333             pEvent->TWMessage = pSource->pendingEvent.TWMessage;
00334             pSource->pendingEvent.TWMessage = MSG_NULL;
00335             twRC = TWRC_DSEVENT;
00336         }
00337         else
00338         {
00339             pEvent->TWMessage = MSG_NULL;  /* no message to the application */
00340             twRC = TWRC_NOTDSEVENT;
00341         }
00342         pSource->twCC = TWCC_SUCCESS;
00343     }
00344 
00345     return twRC;
00346 }
00347 
00348 /* DG_CONTROL/DAT_PASSTHRU/MSG_PASSTHRU */
00349 TW_UINT16 TWAIN_PassThrough (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00350                              TW_MEMREF pData)
00351 {
00352     FIXME ("stub!\n");
00353 
00354     return TWRC_FAILURE;
00355 }
00356 
00357 /* DG_CONTROL/DAT_PENDINGXFERS/MSG_ENDXFER */
00358 TW_UINT16 TWAIN_PendingXfersEndXfer (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00359                                      TW_MEMREF pData)
00360 {
00361     TW_UINT16 twRC = TWRC_SUCCESS;
00362     pTW_PENDINGXFERS pPendingXfers = (pTW_PENDINGXFERS) pData;
00363     activeDS *pSource = TWAIN_LookupSource (pData);
00364 
00365     TRACE("DG_CONTROL/DAT_PENDINGXFERS/MSG_ENDXFER\n");
00366 
00367     if (!pSource)
00368     {
00369         twRC = TWRC_FAILURE;
00370         DSM_twCC = TWCC_BADDEST;
00371     }
00372     else if (pSource->currentState != 6 && pSource->currentState != 7)
00373     {
00374         twRC = TWRC_FAILURE;
00375         pSource->twCC = TWCC_SEQERROR;
00376     }
00377     else
00378     {
00379         if (pPendingXfers->Count != 0)
00380         {
00381             pPendingXfers->Count --;
00382             pSource->currentState = 6;
00383         }
00384         else
00385         {
00386             pSource->currentState = 5;
00387             /* Notify the application that it can close the data source */
00388             pSource->pendingEvent.TWMessage = MSG_CLOSEDSREQ;
00389         }
00390         twRC = TWRC_SUCCESS;
00391         pSource->twCC = TWCC_SUCCESS;
00392     }
00393 
00394     return twRC;
00395 }
00396 
00397 /* DG_CONTROL/DAT_PENDINGXFERS/MSG_GET */
00398 TW_UINT16 TWAIN_PendingXfersGet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00399                                  TW_MEMREF pData)
00400 {
00401     TW_UINT16 twRC = TWRC_SUCCESS;
00402     pTW_PENDINGXFERS pPendingXfers = (pTW_PENDINGXFERS) pData;
00403     activeDS *pSource = TWAIN_LookupSource (pDest);
00404 
00405     TRACE("DG_CONTROL/DAT_PENDINGXFERS/MSG_GET\n");
00406 
00407     if (!pSource)
00408     {
00409         twRC = TWRC_FAILURE;
00410         DSM_twCC = TWCC_BADDEST;
00411     }
00412     else if (pSource->currentState < 4 || pSource->currentState > 7)
00413     {
00414         twRC = TWRC_FAILURE;
00415         DSM_twCC = TWCC_SEQERROR;
00416     }
00417     else
00418     {
00419         /* FIXME: we shouldn't return 1 here */
00420         pPendingXfers->Count = 1;
00421         twRC = TWRC_SUCCESS;
00422         pSource->twCC = TWCC_SUCCESS;
00423     }
00424 
00425     return twRC;
00426 }
00427 
00428 /* DG_CONTROL/DAT_PENDINGXFERS/MSG_RESET */
00429 TW_UINT16 TWAIN_PendingXfersReset (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00430                                    TW_MEMREF pData)
00431 {
00432     TW_UINT16 twRC = TWRC_SUCCESS;
00433     pTW_PENDINGXFERS pPendingXfers = (pTW_PENDINGXFERS) pData;
00434     activeDS *pSource = TWAIN_LookupSource (pDest);
00435 
00436     TRACE("DG_CONTROL/DAT_PENDINGXFERS/MSG_RESET\n");
00437 
00438     if (!pSource)
00439     {
00440         twRC = TWRC_FAILURE;
00441         DSM_twCC = TWCC_BADDEST;
00442     }
00443     else if (pSource->currentState != 6)
00444     {
00445         twRC = TWRC_FAILURE;
00446         DSM_twCC = TWCC_SEQERROR;
00447     }
00448     else
00449     {
00450         pPendingXfers->Count = 0;
00451         pSource->currentState = 5;
00452         twRC = TWRC_SUCCESS;
00453         pSource->twCC = TWCC_SUCCESS;
00454     }
00455 
00456     return twRC;
00457 }
00458 
00459 /* DG_CONTROL/DAT_PENDINGXFERS/MSG_STOPFEEDER */
00460 TW_UINT16 TWAIN_PendingXfersStopFeeder (pTW_IDENTITY pOrigin,
00461                                         pTW_IDENTITY pDest, TW_MEMREF pData)
00462 {
00463     FIXME ("stub!\n");
00464 
00465     return TWRC_FAILURE;
00466 }
00467 
00468 /* DG_CONTROL/DAT_SETUPFILEXFER/MSG_GET */
00469 TW_UINT16 TWAIN_SetupFileXferGet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00470                                   TW_MEMREF pData)
00471 {
00472     FIXME ("stub!\n");
00473 
00474     return TWRC_FAILURE;
00475 }
00476 
00477 /* DG_CONTROL/DAT_SETUPXFER/MSG_GETDEFAULT */
00478 TW_UINT16 TWAIN_SetupFileXferGetDefault (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00479                                          TW_MEMREF pData)
00480 {
00481     FIXME ("stub!\n");
00482 
00483     return TWRC_FAILURE;
00484 }
00485 
00486 
00487 /* DG_CONTROL/DAT_SETUPFILEXFER/MSG_RESET */
00488 TW_UINT16 TWAIN_SetupFileXferReset (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00489                                     TW_MEMREF pData)
00490 {
00491     FIXME ("stub!\n");
00492 
00493     return TWRC_FAILURE;
00494 }
00495 
00496 /* DG_CONTROL/DAT_SETUPFILEXFER/MSG_SET */
00497 TW_UINT16 TWAIN_SetupFileXferSet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00498                                   TW_MEMREF pData)
00499 {
00500     FIXME ("stub!\n");
00501 
00502     return TWRC_FAILURE;
00503 }
00504 
00505 /* DG_CONTROL/DAT_SETUPFILEXFER2/MSG_GET */
00506 TW_UINT16 TWAIN_SetupFileXfer2Get (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00507                                    TW_MEMREF pData)
00508 {
00509     FIXME ("stub!\n");
00510 
00511     return TWRC_FAILURE;
00512 }
00513 
00514 /* DG_CONTROL/DAT_SETUPFILEXFER2/MSG_GETDEFAULT */
00515 TW_UINT16 TWAIN_SetupFileXfer2GetDefault (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00516                                          TW_MEMREF pData)
00517 {
00518     FIXME ("stub!\n");
00519 
00520     return TWRC_FAILURE;
00521 }
00522 
00523 /* DG_CONTROL/DAT_SETUPFILEXFER2/MSG_RESET */
00524 TW_UINT16 TWAIN_SetupFileXfer2Reset (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00525                                   TW_MEMREF pData)
00526 {
00527     FIXME ("stub!\n");
00528 
00529     return TWRC_FAILURE;
00530 }
00531 
00532 /* DG_CONTROL/DAT_SETUPFILEXFER2/MSG_SET */
00533 TW_UINT16 TWAIN_SetupFileXfer2Set (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00534                                   TW_MEMREF pData)
00535 {
00536     FIXME ("stub!\n");
00537 
00538     return TWRC_FAILURE;
00539 }
00540 
00541 /* DG_CONTROL/DAT_SETUPMEMXFER/MSG_GET */
00542 TW_UINT16 TWAIN_SetupMemXferGet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00543                                   TW_MEMREF pData)
00544 {
00545     FIXME ("stub!\n");
00546 
00547     return TWRC_FAILURE;
00548 }
00549 
00550 /* DG_CONTROL/DAT_STATUS/MSG_GET */
00551 TW_UINT16 TWAIN_GetDSStatus (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00552                              TW_MEMREF pData)
00553 {
00554     TW_UINT16 twRC = TWRC_FAILURE;
00555     pTW_STATUS pSourceStatus = (pTW_STATUS) pData;
00556     activeDS *pSource = TWAIN_LookupSource (pDest);
00557 
00558     TRACE ("DG_CONTROL/DAT_STATUS/MSG_GET\n");
00559 
00560     if (!pSource)
00561     {
00562         twRC = TWRC_FAILURE;
00563         DSM_twCC = TWCC_BADDEST;
00564         pSourceStatus->ConditionCode = TWCC_BADDEST;
00565     }
00566     else
00567     {
00568         twRC = TWRC_SUCCESS;
00569         pSourceStatus->ConditionCode = pSource->twCC;
00570         /* Reset the condition code */
00571         pSource->twCC = TWCC_SUCCESS;
00572     }
00573 
00574     return twRC;
00575 }
00576 
00577 /* DG_CONTROL/DAT_USERINTERFACE/MSG_DISABLEDS */
00578 TW_UINT16 TWAIN_DisableDSUserInterface (pTW_IDENTITY pOrigin,
00579                                         pTW_IDENTITY pDest, TW_MEMREF pData)
00580 {
00581     TW_UINT16 twRC = TWRC_SUCCESS;
00582     activeDS *pSource = TWAIN_LookupSource (pDest);
00583 
00584     TRACE ("DG_CONTROL/DAT_USERINTERFACE/MSG_DISABLEDS\n");
00585 
00586     if (!pSource)
00587     {
00588         twRC = TWRC_FAILURE;
00589         DSM_twCC = TWCC_BADDEST;
00590     }
00591     else if (pSource->currentState != 5)
00592     {
00593         twRC = TWRC_FAILURE;
00594         pSource->twCC = TWCC_SEQERROR;
00595     }
00596     else
00597     {
00598         pSource->currentState = 4;
00599         twRC = TWRC_SUCCESS;
00600         pSource->twCC = TWCC_SUCCESS;
00601     }
00602 
00603     return twRC;
00604 }
00605 
00606 /* DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDS */
00607 TW_UINT16 TWAIN_EnableDSUserInterface (pTW_IDENTITY pOrigin,
00608                                        pTW_IDENTITY pDest, TW_MEMREF pData)
00609 {
00610     TW_UINT16 twRC = TWRC_SUCCESS;
00611     pTW_USERINTERFACE pUserInterface = (pTW_USERINTERFACE) pData;
00612     activeDS *pSource = TWAIN_LookupSource (pDest);
00613 
00614     TRACE ("DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDS\n");
00615 
00616     if (!pSource)
00617     {
00618         twRC = TWRC_FAILURE;
00619         DSM_twCC = TWCC_BADDEST;
00620     }
00621     else if (pSource->currentState != 4)
00622     {
00623         twRC = TWRC_FAILURE;
00624         pSource->twCC = TWCC_SEQERROR;
00625     }
00626     else
00627     {
00628         if (pUserInterface->ShowUI)
00629         {
00630             pSource->currentState = 5; /* Transitions to state 5 */
00631             /* FIXME: we should replace xscanimage with our own device UI */
00632             system ("xscanimage");
00633             pSource->currentState = 6;
00634             pSource->pendingEvent.TWMessage = MSG_XFERREADY;
00635         }
00636         else
00637         {
00638             /* no UI will be displayed, so source is ready to transfer data */
00639             pSource->pendingEvent.TWMessage = MSG_XFERREADY;
00640             pSource->currentState = 6; /* Transitions to state 6 directly */
00641         }
00642 
00643         pSource->hwndOwner = pUserInterface->hParent;
00644         twRC = TWRC_SUCCESS;
00645         pSource->twCC = TWCC_SUCCESS;
00646     }
00647 
00648     return twRC;
00649 }
00650 
00651 /* DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDSUIONLY */
00652 TW_UINT16 TWAIN_EnableDSUIOnly (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00653                                 TW_MEMREF pData)
00654 {
00655     TW_UINT16 twRC = TWRC_SUCCESS;
00656     activeDS *pSource = TWAIN_LookupSource (pDest);
00657 
00658     TRACE("DG_CONTROL/DAT_USERINTERFACE/MSG_ENABLEDSUIONLY\n");
00659 
00660     if (!pSource)
00661     {
00662         twRC = TWRC_FAILURE;
00663         DSM_twCC = TWCC_BADDEST;
00664     }
00665     else if (pSource->currentState != 4)
00666     {
00667         twRC = TWRC_FAILURE;
00668         pSource->twCC = TWCC_SEQERROR;
00669     }
00670     else
00671     {
00672         /* FIXME: we should replace xscanimage with our own UI */
00673         system ("xscanimage");
00674         pSource->currentState = 5;
00675         twRC = TWRC_SUCCESS;
00676         pSource->twCC = TWCC_SUCCESS;
00677     }
00678 
00679     return twRC;
00680 }
00681 
00682 /* DG_CONTROL/DAT_XFERGROUP/MSG_GET */
00683 TW_UINT16 TWAIN_XferGroupGet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00684                               TW_MEMREF pData)
00685 {
00686     FIXME ("stub!\n");
00687 
00688     return TWRC_FAILURE;
00689 }
00690 
00691 /* DG_CONTROL/DAT_XFERGROUP/MSG_SET */
00692 TW_UINT16 TWAIN_XferGroupSet (pTW_IDENTITY pOrigin, pTW_IDENTITY pDest,
00693                                   TW_MEMREF pData)
00694 {
00695     FIXME ("stub!\n");
00696 
00697     return TWRC_FAILURE;
00698 }

Generated on Thu May 24 2012 04:27:10 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.