Advertisement
21347

Changes in Plustek SANE-backend for dark scans

Apr 19th, 2013
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.09 KB | None | 0 0
  1. diff --git "a/diff/old/plustek-usb.c" "b/diff/new/plustek-usb.c"
  2. index 6c9e67a..133837f 100644
  3. --- "a/diff/old/plustek-usb.c"
  4. +++ "b/diff/new/plustek-usb.c"
  5. @@ -1366,6 +1366,12 @@ usbDev_Prepare( Plustek_Device *dev, SANE_Byte *buf )
  6.                   scan->sParam.UserDpi.y, scan->sParam.PhyDpi.y, scan->wSumY );
  7.             }
  8.         }
  9. +
  10. +       /* Switch lamp off for dark scan ? */
  11. +       if (dev->adj.dark_scan != 0) {
  12. +           DBG( _DBG_INFO, "Dark-Scan: switching lamps off..\n" );
  13. +           usb_LampOn( dev, SANE_FALSE, SANE_TRUE );
  14. +       }
  15.     }
  16.  
  17.     dumpPicInit( &scan->sParam, "plustek-pic.raw" );
  18. diff --git "a/diff/old/plustek.c" "b/diff/new/plustek.c"
  19. index a8debeb..a270ed4 100644
  20. --- "a/diff/old/plustek.c"
  21. +++ "b/diff/new/plustek.c"
  22. @@ -248,6 +248,7 @@ static const SANE_Range warmup_range   = { -1,   999, 1 };
  23.  static const SANE_Range offtimer_range = {  0,   999, 1 };
  24.  static const SANE_Range gain_range     = { -1,    63, 1 };
  25.  static const SANE_Range loff_range     = { -1, 16363, 1 };
  26. +static const SANE_Range darkscan_range = {  0,     1, 1 };
  27.  
  28.  /* authorization stuff */
  29.  static SANE_Auth_Callback auth = NULL;
  30. @@ -303,6 +304,7 @@ static void show_cnf( CnfDef *cnf )
  31.     DBG( _DBG_SANE_INIT,"green Gamma  : %.2f\n",cnf->adj.ggamma              );
  32.     DBG( _DBG_SANE_INIT,"blue Gamma   : %.2f\n",cnf->adj.bgamma              );
  33.     DBG( _DBG_SANE_INIT,"gray Gamma   : %.2f\n",cnf->adj.graygamma           );
  34. +   DBG( _DBG_SANE_INIT,"dark scan    : %d\n",  cnf->adj.dark_scan           );
  35.     DBG( _DBG_SANE_INIT,"---------------------\n" );
  36.  }
  37.  
  38. @@ -1109,6 +1111,16 @@ init_options( Plustek_Scanner *s )
  39.     }
  40.  
  41.     usb_UpdateButtonStatus( s );
  42. +
  43. +   /* scan dark image without lamps ? */
  44. +   s->opt[OPT_DARK_SCAN].name  = "dark-scan";
  45. +   s->opt[OPT_DARK_SCAN].title = SANE_I18N("Dark Scan");;
  46. +   s->opt[OPT_DARK_SCAN].desc  = SANE_I18N("Perform a dark scan (1) or with the lamps on (0)");
  47. +   s->opt[OPT_DARK_SCAN].type  = SANE_TYPE_INT;
  48. +   s->opt[OPT_DARK_SCAN].constraint_type = SANE_CONSTRAINT_RANGE;
  49. +   s->opt[OPT_DARK_SCAN].constraint.range = &darkscan_range;
  50. +   s->val[OPT_DARK_SCAN].w     = adj->dark_scan;
  51. +
  52.     return SANE_STATUS_GOOD;
  53.  }
  54.  
  55. @@ -1427,6 +1439,8 @@ init_config_struct( CnfDef *cnf )
  56.     cnf->adj.rgamma    = 1.0;
  57.     cnf->adj.ggamma    = 1.0;
  58.     cnf->adj.bgamma    = 1.0;
  59. +
  60. +   cnf->adj.dark_scan = 0;
  61.  }
  62.  
  63.  /** intialize the backend
  64. @@ -1546,6 +1560,8 @@ sane_init( SANE_Int *version_code, SANE_Auth_Callback authorize )
  65.             decodeVal( str, "redGamma",   _FLOAT, &config.adj.rgamma, &dval );
  66.             decodeVal( str, "greenGamma", _FLOAT, &config.adj.ggamma, &dval );
  67.             decodeVal( str, "blueGamma",  _FLOAT, &config.adj.bgamma, &dval );
  68. +
  69. +           decodeVal( str, "dark_scan", _INT, &config.adj.dark_scan, &ival);
  70.             continue;
  71.  
  72.         /* check for sections: */
  73. @@ -1958,6 +1974,13 @@ sane_control_option( SANE_Handle handle, SANE_Int option,
  74.                 DBG( _DBG_INFO, "Reading BLUE gamma.\n" );
  75.                 memcpy( value, s->val[option].wa, s->opt[option].size );
  76.                 break;
  77. +
  78. +           /* dark scan */
  79. +           case OPT_DARK_SCAN:
  80. +               DBG( _DBG_INFO, "Reading drak_scan.\n" );
  81. +               *(SANE_Word *)value = s->val[OPT_DARK_SCAN].w;
  82. +               break;
  83. +
  84.             default:
  85.                 return SANE_STATUS_INVAL;
  86.         }
  87. @@ -2017,6 +2040,12 @@ sane_control_option( SANE_Handle handle, SANE_Int option,
  88.                     if( NULL != info )
  89.                         *info |= SANE_INFO_RELOAD_PARAMS;
  90.                     break;
  91. +               case OPT_DARK_SCAN:
  92. +                   DBG( _DBG_INFO, "Setting dark_scan to 0x%02x.\n", *(SANE_Word *)value);
  93. +                   s->val[option].w = *(SANE_Word *)value;
  94. +                   if( NULL != info )
  95. +                       *info |= SANE_INFO_RELOAD_PARAMS;
  96. +                   break;
  97.  
  98.                 case OPT_CACHECAL:
  99.                     s->val[option].w = *(SANE_Word *)value;
  100. @@ -2527,6 +2556,9 @@ local_sane_start(Plustek_Scanner *s, int scanmode )
  101.  
  102.     tsecs = 0; /* reset timer */
  103.  
  104. +   DBG( _DBG_INFO, "--- dark_scan is set to 0x%02x, transfer to dev...\n", s->val[OPT_DARK_SCAN].w);
  105. +   dev->adj.dark_scan = s->val[OPT_DARK_SCAN].w;
  106. +
  107.     result = usbDev_startScan( dev );
  108.     if( result < 0 ) {
  109.         DBG( _DBG_ERROR, "usbDev_startScan() failed(%d)\n", result );
  110. @@ -2581,6 +2613,7 @@ sane_start( SANE_Handle handle )
  111.     int              fds[2];
  112.  
  113.     DBG( _DBG_SANE_INIT, "sane_start\n" );
  114. +   DBG( _DBG_INFO, "--- dark_scan is set to 0x%02x.\n", s->val[OPT_DARK_SCAN].w);
  115.  
  116.     if (s->scanning)
  117.         return SANE_STATUS_DEVICE_BUSY;
  118. diff --git "a/diff/old/plustek.conf.in" "b/diff/new/plustek.conf.in"
  119. index e16823e..8ba4fce 100644
  120. --- "a/diff/old/plustek.conf.in"
  121. +++ "b/diff/new/plustek.conf.in"
  122. @@ -173,6 +173,11 @@ option enableTPA 0
  123.  option mov 0
  124.  
  125.  #
  126. +# switch lamps off when scanning. Suitable for scanning B/W negatives or when using as scanner camera
  127. +#
  128. +option dark_scan 0
  129. +
  130. +#
  131.  # and of course the device-name
  132.  #
  133.  # device /dev/usbscanner
  134. diff --git "a/diff/old/plustek.h" "b/diff/new/plustek.h"
  135. index be657c1..0244916 100644
  136. --- "a/diff/old/plustek.h"
  137. +++ "b/diff/new/plustek.h"
  138. @@ -247,6 +247,7 @@ enum {
  139.     OPT_BUTTON_3,
  140.     OPT_BUTTON_4,
  141.     OPT_BUTTON_LAST = OPT_BUTTON_4,
  142. +   OPT_DARK_SCAN,
  143.     NUM_OPTIONS
  144.  };
  145.  
  146. @@ -303,6 +304,9 @@ typedef struct {
  147.  
  148.     double  graygamma;
  149.  
  150. +   /* scan without lamps */
  151. +   int dark_scan;
  152. +
  153.  } AdjDef;
  154.  
  155.  typedef struct {
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement