BARCODEREADOPT

typedef struct tagBarCodeReadOpt
{
   L_UINT32 ulSearchType; 
   L_INT nUnits; 
   L_UINT32 ulFlags; 
   L_INT nMultipleMax; 
   RECT rcSearch; 
   L_BOOL bUseRgn; 
   BARCODECOLOR BarColor;
} BARCODEREADOPT, L_FAR * pBARCODEREADOPT;

This structure contains barcode read options that control the reading process.

Member

Description

ulSearchType

Type of barcode for which to search. You can combine values when appropriate among the same group values, by using a bitwise OR ( | ). Possible values are:

Value

Meaning

Linear Barcode:

 

BARCODE_1D_EAN_13

[0x00000001] To read EAN 13 type.

BARCODE_1D_EAN_8

[0x00000002] To read EAN 8 type.

BARCODE_1D_UPC_A

[0x00000004] To read UPC version A type.

BARCODE_1D_UPC_E

[0x00000008] To read UPC version E type.

BARCODE_1D_CODE_3_OF_9

[0x00000010] To read Code 3 of 9 (Code 39) type.

BARCODE_1D_CODE_128

[0x00000020] To read Code 128 type.

BARCODE_1D_CODE_I2_OF_5

[0x00000040] To read Interleaved 2 of 5 type.

BARCODE_1D_CODA_BAR

[0x00000080] To read CODABAR type.

BARCODE_1D_UCCEAN_128

[0x00000100] To read UCCEAND 128 type

BARCODE_1D_CODE_93

[0x00000200] To read Code 93 type

BARCODE_1D_READ_ANYTYPE

[0x00000FF0] To enable searching of all linear barcode types.

PDF Barcodes:

 

BARCODE_PDF417

[0x00002000] To read PDF417 type.

Data Matrix Barcode:

 

BARCODE_DM_READ_SQUARE

[0x00010000] To read square Data Matrix symbols.

BARCODE_DM_READ_RECTANGLE

[0x00020000] To read rectangular Data Matrix symbols.

BARCODE_DM_READ_SMALL

[0x00040000] To read small Data Matrix symbols.

 

QR Barcodes:

 

 

BARCODE_QR_CODE

[0x00100000] To read QR barcodes.

nUnits

Unit of measure. Possible values are:

 

Value

Meaning

BARCODE_SCANLINES_PER_PIXELS

[0] the rectangle search area is measured in pixels.

BARCODE_INCHES

[1] the rectangle search area is measured in inches. You must multiply the search area by 100. (i.e. to specify 1 inch set this to 100)

BARCODE_MILLIMETERS

[2] the rectangle search area is measured in mm.

ulFlags

Processing options. You can combine values when appropriate, by using a bitwise OR ( | ). The following values are used only when you want to search for linear barcodes. Pass 0 to get the default. Possible values are:

Value

Meaning

BARCODE_MARKERS

[0x0001] Enables the reading of barcodes that have start and end markers.

BARCODE_BLOCK_SEARCH

[0x0002] Search for barcodes by moving up or down through the rectangle until the first character is read or there is no barcode found.

BARCODE_USECOLORS

[0x0200] Enable searching for color barcodes. The colors are used as the exact bar and space colors for searching for the barcode.

BARCODE_RETURNCHECK

[0x1000] When setting this bit, then the check character will return in all cases, whether BARCODE1D.bErrorCheck is enabled or not.

BARCODE_RETURNCORRUPT

[0x0080] Enables the engine to return the area that an un-readable PDF417 symbol was located.

BARCODE_DM_FORCE_INVERT

[0x00000800] Forces the Data Matrix read to search for reversed color symbols even if non-inverted color symbols were found.

BARCODE_DM_FASTFIND_DISABLE

[0x00001000] Disables fast find feature when reading Data Matrix symbols. Fast find is automatically disabled when reading small symbols.

BARCODE_RETURN_FOUR_POINTS

[0x00002000] Enables return of four corners and not bounding rectangle.

BARCODE_PDF_READ_MODE_0

[0x0000] Basic Channel Mode :No transmission of symbology ID, No escape doubling, Macro PDF is illegal.ECI is illegal, Reserved code words are illegal.

BARCODE_PDF_READ_MODE_1

[0x1000] Extended Channel Mode.Transmit] L1 symbology ID. Escape doubling. Macro PDF is transmitted. ECI is transmitted. Reserved code words are transmitted.

BARCODE_PDF_READ_MODE_2

[0x2000] Basic Channel Mode. Transmit ] L2 symbology ID. No escape doubling. Macro PDF is illegal. ECI is illegal. Reserved code words are illegal.

BARCODE_PDF_READ_MODE_3_BASIC

[0x3000] Basic Channel Mode. Transmit ] L0 symbology ID. No escape doubling. Macro PDF is illegal. ECI is illegal. Reserved code words are illegal.

BARCODE_PDF_READ_MODE_3_EXTENDED

[0x7000] Extended Channel Mode. Transmit ] L0 symbology ID. Escape doubling. Macro PDF is transmitted. ECI is transmitted in GLI format. Reserved code words transmitted.

BARCODE_PDF_READ_MACRO_OPTION_0

[0x00010000] Enable the return of the optional macro ‘File Name’ field.

BARCODE_PDF_READ_MACRO_OPTION_1

[0x00020000] Enable the return of the optional macro ‘Segment Count’ field.

BARCODE_PDF_READ_MACRO_OPTION_2

[0x00040000] Enable the return of the optional macro ‘Time Stamp’ field.

BARCODE_PDF_READ_MACRO_OPTION_3

[0x00080000] Enable the return of the optional macro ‘Sender’ field.

BARCODE_PDF_READ_MACRO_OPTION_4

[0x00100000] Enable the return of the optional macro ‘Addressee’ field.

BARCODE_PDF_READ_MACRO_OPTION_5

[0x00200000] Enable the return of the optional macro ‘File Size’ field.

BARCODE_PDF_READ_MACRO_OPTION_6

[0x00400000] Enable the return of the optional macro ‘Checksum’ field.

BARCODE_PDF_READ_MACRO_OPTION_79AZ

[0x00800000] Enable the return of all optional macro fields 7 to 9 and A to Z.

BARCODE_PDF_READ_RETURN_PARTIAL

[0x01000000] Returns PDF417 data even if ECC does not succeed.

nMultipleMax

Specifies the maximum number of barcodes to search. Pass 0 to read all barcodes in a specified search area.

rcSearch

Rectangle that contains the search area for the barcodes.

 

bUseRgn

Flag that indicates whether to use the region when searching. Possible values are:

Value

Meaning

TRUE

If the bitmap has a region, the LBarCode::Read function will only search the region for barcodes. If the bitmap does not have a region, the LBarCode::Read function will search the entire bitmap for barcodes.

FALSE

The LBarCode::Read will use the location and size parameters in rcSearch to determine what area of the bitmap to search for barcodes.

BarColor

BarCodeColor structure, which contains the bars and space colors to search for barcodes.

Comments

pBARCODEREADOPT is a pointer to an BARCODEREADOPT structure. Where a function parameter type is pBARCODEREADOPT, you can declare a BARCODEREADOPT variable and pass the variable's address in the parameter. Declaring a pBARCODEREADOPT variable is necessary only if your program requires a pointer.

When the BARCODE_USECOLORS flag is set, then this function will use the BarColor member, otherwise the LBarCode::Read function will ignore it and use the default colors of black for bars and white for spaces are used.

Using colors does not apply for 1 bit per pixel images.

The BARCODE_USECOLORS is used with all barcode kinds.

The BARCODE_RETURNCHECK flag used only with reading linear barcodes.

The smallest Data Matrix symbol size is 40 pixels by 40 pixels. It can be read using BARCODE_DM_READ_SMALL since this enables the reading of Data Matrix symbols that are between 20 to 40 pixels in size.

When the ulFlags member value is set to BARCODE_RETURN_FOUR_POINTS flag, the BARCODEDATA.rcBarLocation member will be updated with the four-point corner encoded values.

Before using the four-point corner encoded values, they must be decoded.

The following example shows how to decode the four-point corner values:

   POINT p1, p2, p3, p4;
int nStartX = BarCodeData.rcBarLocation.left;
int nStartY = BarCodeData.rcBarLocation.top;
int nWidth  = BarCodeData.rcBarLocation.right - nStartX;
int nHeight = BarCodeData.rcBarLocation.bottom - nStartY;
p1.x = (nStartX & 0xffff);
p1.y = (nStartX >> 16);
p2.x = (nStartY & 0xffff);
p2.y = (nStartY >> 16);
p3.x = (nWidth & 0xffff);
p3.y = (nWidth >> 16);
p4.x = (nHeight & 0xffff);
p4.y = (nHeight >> 16);