pike.git / src / modules / SANE / sane.c

version» Context lines:

pike.git/src/modules/SANE/sane.c:25:   #include "backend.h"   #include "operators.h"   #include "module_support.h"   #include "builtin_functions.h"      #include "../Image/image.h"      /* must be included last */   #include "module_magic.h"    - RCSID("$Id: sane.c,v 1.8 2000/12/01 08:10:23 hubbe Exp $"); + RCSID("$Id: sane.c,v 1.9 2001/07/21 00:54:31 nilsson Exp $");      /*   **! module SANE   **!   **! This module enables access to the SANE (Scanner Access Now Easy)   **! library from pike   **!   **! note - **! $Id: sane.c,v 1.8 2000/12/01 08:10:23 hubbe Exp $ + **! $Id: sane.c,v 1.9 2001/07/21 00:54:31 nilsson Exp $   */      static int sane_is_inited;      struct scanner   {    SANE_Handle h;   };      static void init_sane()
pike.git/src/modules/SANE/sane.c:68:   }         /*   **! method array(mapping) list-scanners()   **!   **! Returns an array with all available scanners.   **!   **! Example:   **! <pre> - **! Pike v0.7 release 120 running Hilfe v2.0 (Incremental Pike Frontend) + **! Pike v0.7 release 120 running Hilfe v2.0 (Incremental Pike Frontend)   **! > SANE.list_scanners();   **! Result: ({   **! ([   **! "model":"Astra 1220S ",   **! "name":"umax:/dev/scg1f",   **! "type":"flatbed scanner",   **! "vendor":"UMAX "   **! ]),   **! ([   **! "model":"Astra 1220S ",
pike.git/src/modules/SANE/sane.c:214:   {    char *name;    if(!sane_is_inited) init_sane();    get_all_args( "create", args, "%s", &name );       if( sane_open( name, &THIS->h ) )    Pike_error("Failed to open scanner \"%s\"\n", name );   }      /* - **! function array(mapping) list_options( ) + **! method array(mapping) list_options()   */   static void f_scanner_list_options( INT32 args )   {    int i, n;    const SANE_Option_Descriptor *d;    pop_n_elems( args );       for( i = 1; (d = sane_get_option_descriptor( THIS->h, i) ); i++ )    push_option_descriptor( d );    f_aggregate( i-1 );
pike.git/src/modules/SANE/sane.c:242:    if(d->name && !strcmp( d->name, name ) )    {    *p = d;    return i;    }    Pike_error("No such option: %s\n", name );   }         /* - **! function void set_option( string name, mixed new_value ) - **! function void set_option( string name ) + **! method void set_option( string name, mixed new_value ) + **! method void set_option( string name )   **! If no value is specified, the option is set to it's default value   */   static void f_scanner_set_option( INT32 args )   {    char *name;    int no;    INT_TYPE int_value;    FLOAT_TYPE float_value;    SANE_Int tmp;    const SANE_Option_Descriptor *d;
pike.git/src/modules/SANE/sane.c:291:    } else {    int_value = 1;    sane_control_option( THIS->h, no, SANE_ACTION_SET_AUTO, &int_value, &tmp );    }    pop_n_elems( args );    push_int( 0 );   }         /* - **! function mixed get_option( string name ) + **! method mixed get_option( string name )   */   static void f_scanner_get_option( INT32 args )   {    char *name;    int no;    SANE_Int int_value;    float f;    SANE_Int tmp;    const SANE_Option_Descriptor *d;    get_all_args( "get_option", args, "%s", &name );
pike.git/src/modules/SANE/sane.c:332:    sane_control_option( THIS->h, no, SANE_ACTION_GET_VALUE,    &name, &tmp );    pop_n_elems( args );    push_text( name );    case SANE_TYPE_GROUP:    break;    }   }      /* - **! function mapping(string:int) get_parameters( ) + **! method mapping(string:int) get_parameters()   */   static void f_scanner_get_parameters( INT32 args )   {    SANE_Parameters p;    pop_n_elems( args );    sane_get_parameters( THIS->h, &p );    push_text( "format" ); push_int( p.format );    push_text( "last_frame" ); push_int( p.last_frame );    push_text( "lines" ); push_int( p.lines );    push_text( "depth" ); push_int( p.depth );
pike.git/src/modules/SANE/sane.c:414:    push_text( "Image.Image" );    APPLY_MASTER( "resolv", 1 );    image_program = program_from_svalue( sp - 1 );    sp--;/* Do not free image program.. */    }    if( !image_program )    Pike_error("No Image.Image?!\n");   }      /* - **! function Image.Image simple_scan( ) + **! method Image.Image simple_scan()   */   static void f_scanner_simple_scan( INT32 args )   {    SANE_Parameters p;    SANE_Handle h = THIS->h;    struct object *o;    rgb_group *r;          assert_image_program();
pike.git/src/modules/SANE/sane.c:469:    break;    }    }    while( !p.last_frame );       THREADS_DISALLOW();    push_object( o );   }      /* - **! function void row_scan(function(Image.Image,int,Scanner:void) callback) + **! method void row_scan(function(Image.Image,int,Scanner:void) callback)   */   static void f_scanner_row_scan( INT32 args )   {    SANE_Parameters p;    SANE_Handle h = THIS->h;    struct svalue *s;    struct object *o;    rgb_group *r, or;    int i, nr;   
pike.git/src/modules/SANE/sane.c:614:    set_read_callback( fd, 0, 0 );    free_object( c->o );    free_object( c->t );    free_svalue( &c->callback );    free( c->buffer );    free( c );    }   }      /* - **! function void nonblocking_row_scan(function(Image.Image,int,Scanner,int:void) callback) + **! method void nonblocking_row_scan(function(Image.Image,int,Scanner,int:void) callback)   */   static void f_scanner_nonblocking_row_scan( INT32 args )   {    SANE_Parameters p;    SANE_Handle h = THIS->h;    struct svalue *s;    int fd;    struct row_scan_struct *rsp;       if( sane_start( THIS->h ) ) Pike_error("Start failed\n");