264
265
return SANE_STATUS_GOOD;
269
/** Look in image for likely left/right/bottom paper edges, then crop image.
270
* Since failing to crop isn't fatal, we always return SANE_STATUS_GOOD .
273
genesys_crop(Genesys_Scanner *s)
275
SANE_Status status = SANE_STATUS_GOOD;
276
Genesys_Device *dev = s->dev;
282
DBG (DBG_proc, "%s: start\n", __FUNCTION__);
284
/* first find edges if any */
285
status = sanei_magic_findEdges (&s->params,
293
if (status != SANE_STATUS_GOOD)
295
DBG (DBG_info, "%s: bad or no edges, bailing\n", __FUNCTION__);
298
DBG (DBG_io, "%s: t:%d b:%d l:%d r:%d\n", __FUNCTION__, top, bottom, left,
301
/* now crop the image */
303
sanei_magic_crop (&(s->params), dev->img_buffer, top, bottom, left, right);
306
DBG (DBG_warn, "%s: failed to crop\n", __FUNCTION__);
310
/* update counters to new image size */
311
dev->total_bytes_to_read = s->params.bytes_per_line * s->params.lines;
314
DBG (DBG_proc, "%s: completed\n", __FUNCTION__);
315
return SANE_STATUS_GOOD;
318
/** Look in image for likely upper and left paper edges, then rotate
319
* image so that upper left corner of paper is upper left of image.
320
* @return since failure doens't prevent scanning, we always return
324
genesys_deskew(Genesys_Scanner *s)
327
Genesys_Device *dev = s->dev;
329
int x = 0, y = 0, bg;
332
DBG (DBG_proc, "%s: start\n", __FUNCTION__);
335
if(s->params.format==SANE_FRAME_GRAY && s->params.depth == 1)
339
status = sanei_magic_findSkew (&s->params,
341
dev->sensor.optical_res,
342
dev->sensor.optical_res,
346
if (status!=SANE_STATUS_GOOD)
348
DBG (DBG_error, "%s: bad findSkew, bailing\n", __FUNCTION__);
349
return SANE_STATUS_GOOD;
351
DBG(DBG_info, "%s: slope=%f => %f\n",__FUNCTION__,slope, (slope/M_PI_2)*90);
352
/* rotate image slope is in [-PI/2,PI/2]
353
* positive values rotate trigonometric direction wise */
354
status = sanei_magic_rotate (&s->params,
360
if (status!=SANE_STATUS_GOOD)
362
DBG (DBG_error, "%s: rotate error: %s", __FUNCTION__, sane_strstatus(status));
365
DBG (DBG_proc, "%s: completed\n", __FUNCTION__);
366
return SANE_STATUS_GOOD;
370
* @return since failure doens't prevent scanning, we always return
374
genesys_despeck(Genesys_Scanner *s)
376
if(sanei_magic_despeck(&s->params,
378
s->val[OPT_DESPECK].w)!=SANE_STATUS_GOOD)
380
DBG (DBG_error, "%s: bad despeck, bailing\n",__FUNCTION__);
383
return SANE_STATUS_GOOD;
387
/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */