The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

 Scanner::Format - Page Scan format class.

SYNOPSIS

 use Scanner::Format;

 $obj  = Scanner::Format->new ( list of named arguments );
         Scanner::Format->setDefaultCalibratorFlag;
         Scanner::Format->clrDefaultCalibratorFlag;
 $bool = Scanner::Format->defaultUnitsAre ( $myunits );
 $bool = Scanner::Format->defaultFormatIs ( $myformat );

 ($width, $height) = $obj->ScanDimensions;
 ($width, $height) = $obj->UserDimensions;
 $flg              = $obj->landscape;
 $flg              = $obj->portrait;
 $str              = $obj->orientation;
 $str              = $obj->format;
 $obj              = $obj->info ($str);

Inheritance

 UNIVERSAL

Description

This class is a representation of a format of a page.

Examples

 use Scanner::Format;

 my $flg = Scanner::Format->defaultUnitsAre ( "Inches" );
    $flg = Scanner::Format->defaultFormatIs ( "P:Letter" );
           Scanner::Format->setDefaultCalibratorFlag;

 my $obj    = Scanner::Format->new ('format' => "P:8.5x13.0");
 my ($x,$y) = $obj->ScanDimensions;

 if ($obj->landscape) {print "It is a landscape format.\n";}
 if ($obj->portrait ) {print "It is a portrait  format.\n";}

Class Variables

 DEFAULT_UNITS              Assume arguments to every new are in 
                            this unit. Default is mm.
 DEFAULT_FORMAT             If a new method does not specify a format
                            assume this format. Default is a Portrait
                            A4 page, ie 215.9 x 304.8 mm.
 DEFAULT_CALIBRATOR         Flag whether an extra inch or 25.4 mm
                            should be added to the bottom to allow for
                            calibration tools below the page. Default is 
                            off.

Instance Variables

 format         page format string
 calibrator     Flag  indicating whether extra space is left at the bottom.
 orientation    L for landscape and P for Portrait.
 height         Height of the page in default units, usually mm.
 width          Width of the page in default units, usually mm.
 papertype      a4, letter, etc. May be undefined.

Class Methods

$obj = Scanner::Format->new ( named argument list )

This is the Class method for creating new Scanner::Format objects. It may have many different arguments. They are in short:

                format     -> string          {OPT: default is "P:A4"]
                calibrator -> boolean         [OPT: default is 1]
                units      -> mm|inches       [OPT: default is "mm"]

'calibrator' => <boolean>

If set, add an extra inch below the page. The default value is false.

'units' => <units>

Sets the unit of measure to be used when interpreting the width and height parameters. Current choices are "mm" and "inches". The default value is "mm" since that is what the 'scanimage' program uses.

'format' => <formatstring>

A format string has two or 3 fields:

  <formatstring> := <orientation>:<papertype> | 
                    <orientation>:<scanwidth>x<scanheight>

where:

 <orientation>: is the page placement on the scanner, either L for landscape or 
                P for portrait.

 <papertype>:   allowed values at present are a4, letter and legal (case is ignored).

 <scanwidth>:   scan width of the page in the current units of measure and must be 
                greater than zero.

 <scanheight>:  scan height of the page in the current units of measure and must be 
                greater than zero.

All fields are case insensitive.

The default value is a portrait oritentation of an a4 paper type. The size is 8.5 inch * 25.4 mm/inch across the width of the scanner and 12.5 inch * 25.4 mm/inch down the length of the scanner.

'date' => <date string>

A date to be included as the first part of the page name, where a single date is represented as:

        yyyymmdd
        yyyymmddhhmmss

and mm and dd may be 00 to represent 'the whole month' or the 'whole year' as in a monthly magazine or a yearly report, or to represent uncertainty, 'it was from sometime in that year'. there may optionally be two dates, so as to represent a period of time associated with the page:

        date1-date2
Scanner::Format->setDefaultCalibratorFlag

Setting this will make every object created add an extra inch below each page unless specifically overridden by 'calibrator' => 0 when a new object is created.

The intent of this option is to leave space for placement of a size/color/aspect-ratio calibration devices in the scan field of view. Common image calibration devices are small color wheels, rulers, little square things like you see in photos by field Geologists, or perhaps a round coin to show aspect ratios. Such calibrators act are a permanent means of mapping an image to its real world original.

The feature is turned off by default. It may either be set on by default with this Class method, or turned on explicitly for particular page objects.

Scanner::Format->clrDefaultCalibratorFlag

The converse of the above. Since this is the default condition of the Class, you will only need to run this if you have executed a setDefaultCalibratorFlag somewhere in your code.

$bool = Scanner::Format->defaultUnitsAre ( $units )

Set the default units for height and width input values. Legal inputs are "mm" and "inches". Case is ignored. Any other value causes a false return.

If you do nothing, the class default is "mm" because the scanimage program assumes metric.

Returns true on success; false if no arg or it wasn't one of the two valid options.

$bool = Scanner::Format->defaultPaperTypeIs ( $papertype )

Set the default paper type. Legal values are "a4", "letter" or "legal". Case is ignored. Any other value causes a false return.

If you do nothing, the class default is "a4". Why? Because we used metric for the units default. Consistency is next to godliness I always say.

Instance Methods

$str = $obj->format

Return the current page scan format string.

$flg = $obj->info ($str)

Print a block of informational text to stdout:

    [$str Format]
    Format:                     P:8.5x12
    Scan Orientation:           P
    Paper type:                 undefined
    Scan width:                 8.5 Inches
    Scan length:                12 Inches
    Image Calibrator Margin:    0 Iinches
$flg = $obj->landscape

Return true if it uses a landscape page format.

$flg = $obj->orientation

Return the orientation string, "L" or "P".

$flg = $obj->portrait

Return true if it uses a portrait page format.

($width, $height) = $obj-Egt>ScanDimensions>

Retrieve the page dimensions to be used for scanning. The height may include extra space for calibration devices as earlier discussed in the Scanner::Format->setDefaultCalibratorFlag section:

        (width, height+calibratorheight)

The scanner might of course have something to say about the height or width we have selected! That, however, is not the Format's problem. It is what it is and it might be too large for the scanner you have.

($width, $height) = $obj-Egt>UserDimensions>

Retrieve the page dimensions as originally supplied by the user.

Private Class Methods

 None.

Private Instance Methods

 None.

Errors and Warnings

 None.

KNOWN BUGS

 See TODO.

SEE ALSO

 None.

AUTHOR

Dale Amon <amon@vnl.com>

2 POD Errors

The following errors were encountered while parsing the POD:

Around line 463:

=back doesn't take any parameters, but you said =back 4

Around line 513:

=back doesn't take any parameters, but you said =back 4