BARCODEREADOPT

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

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

Members

ulSearchType

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

Linear Barcode:

Value Meaning
BARCODE_1D_EAN_13 [0x80000001] To read EAN 13 type.
BARCODE_1D_EAN_8 [0x80000002] To read EAN 8 type.
BARCODE_1D_UPC_A [0x80000004] To read UPC version A type.
BARCODE_1D_UPC_E [0x80000008] To read UPC version E type.
BARCODE_1D_CODE_3_OF_9 [0x80000010] To read Code 3 of 9 (Code 39) type.
BARCODE_1D_CODE_3_OF_9_EXTENDED [0x80040000] To read Code 3 of 9 (Code 39) type with extended characters encoded
BARCODE_1D_CODE_128 [0x80000020] To read Code 128 type.
BARCODE_1D_CODE_I2_OF_5 [0x80000040] To read Interleaved 2 of 5 type.
BARCODE_1D_CODA_BAR [0x80000080] To read CODABAR type.
BARCODE_1D_UCCEAN_128 [0x80000100] To read UCCEAND 128 type.
BARCODE_1D_CODE_93 [0x80000200] To read Code 93 type.
BARCODE_1D_CODE_93_EXTENDED [0x80000201] To read Code 93 Extended type.
BARCODE_1D_EANEXT_5 [0x80000400] To read 5-digit supplemental type.
BARCODE_1D_EANEXT_2 [0x80000800] To read 2-digit supplemental type.
BARCODE_1D_MSI [0x80001000] To read MSI (Modified Plessey) type.
BARCODE_1D_CODE11 [0x80002000] To read Code 11(USD-8) type.
BARCODE_1D_CODE_S25 [0x80004000] To read Standard 2 of 5 (Industrial 2 of 5) type.
BARCODE_1D_READ_RSS14 [0x80008000] GS1 Databar (formerly RSS14) standard and truncated.
BARCODE_1D_RSS14_LIMITED [0x80010000] GS1 Databar (formerly RSS14) Limited type.
BARCODE_1D_RSS14_EXPANDED [0x80020000] GS1 Databar (formerly RSS14) Expanded type.
BARCODE_1D_READ_ANYTYPE [0x8003FFFF] To enable searching of all linear barcode types.
BARCODE_1D_READ_ANYTYPE_NO_RSS14 [0x80007FFF] Enables searching of all linear barcode types except GS1 Databar (formerly RSS14) types. Speeds up the read process compared to the BARCODE_1D_READ_ANYTYPE option.

Patch Code Barcodes:

Value Meaning
BARCODE_1D_PATCH_CODE [0x04000001] To read Patch Code.

Postal barcodes:

Value Meaning
BARCODE_1D_POST_NET [0x04000002] To read Postnet.
BARCODE_1D_PLANET [0x04000004] Planet type.

4 State barcode symbols:

Value Meaning
BARCODE_1D_AUST_POST [0x04000008] Australian Post 4 State type.
BARCODE_1D_RM4SCC [0x04000010] Royal Mail (RM4SCC) 4 State type.
BARCODE_1D_USPS4BC [0x04000080] USPS OneCode 4-State (4BC) type

GS1 Databar (formerly RSS14) Stacked barcode symbols:

Value Meaning
BARCODE_1D_RSS14_STACKED [0x04000020] GS1 Databar (formerly RSS14) Stacked / Stacked Omnidirectional types.
BARCODE_1D_RSS14_EXP_STACKED [0x04000040] GS1 Databar (formerly RSS14) Expanded Stacked barcode type.

PDF Barcodes:

Value Meaning
BARCODE_PDF417 [0x20002000] To read PDF417 type.

MicroPDF417 Barcodes:

Value Meaning
BARCODE_MICRO_PDF417 [0x20000001] To read MicroPDF417 type.

Data Matrix Barcode:

Value Meaning
BARCODE_DM_READ_SQUARE [0x10000001] To read square Data Matrix symbols.
BARCODE_DM_READ_RECTANGLE [0x10000002] To read rectangular Data Matrix symbols.
BARCODE_DM_READ_SMALL [0x10000004] To read small Data Matrix symbols.

QR Barcodes:

Value Meaning
BARCODE_QR_CODE [0x08000001] To read QR barcodes.

Other barcode symbol:

Value Meaning
BARCODE_1D_PHARMA_CODE [0x04000100] PharmaCode type. Used in the pharmaceutical industry as a packing control system.

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_APPLY_PREPROCESSING [0x04200000] Setting this bit enables image segmentation and advanced image preprocessing during barcode recognition.
BARCODE_DOUBLE_PASS [0x04000000] Setting this bit enables the use of double pass when reading 2D symbols.
BARCODE_DOUBLE_PASS_IF_SUCCESS [0x04100000] Setting this bit forces the use of double pass when reading 2D symbols.
BARCODE_IMAGETYPE_PICTURE [0x08000000] Setting this bit indicates that the barcode image is a picture (taken from a camera or a video device); otherwise, the barcode image is a scanned document image.
BARCODE_RETURNCHECK [0x1000] When setting this bit, then the check character will return in all cases, whether BARCODE1D.bErrorCheck is enabled or not. The default behavior returns the check digit for only BARCODE_1D_EAN_13, BARCODE_1D_EAN_8, BARCODE_1D_UPC_A, and BARCODE_1D_UPC_E.
BARCODE_DONOTRETURNCHECK [0x4000] When setting this bit, then the check character will not return in all cases, whether BARCODE1D.bErrorCheck is enabled or not. The default behavior returns the check digit for only BARCODE_1D_EAN_13, BARCODE_1D_EAN_8, BARCODE_1D_UPC_A, and BARCODE_1D_UPC_E.
BARCODE_CALCULATEBWR [0x8000] When setting this bit, the bar width reduction will be calculated and stored in BarCodeData.nBWR.
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_HRItoGS1 [0x00004000] Formats an HRI string as GS1 when writing a DM symbol.
BARCODE_GS1toHRI [0x00004001] Formats a GS1 string as HRI when reading a DM symbol.
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. Used with PDF417 and MicroPDF417.
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. Used with PDF417 and MicroPDF417.
BARCODE_PDF_READ_MODE_2 [0x4000] Basic Channel Mode. Transmit ] L2 symbology ID. No escape doubling. Macro PDF is illegal. ECI is illegal. Reserved code words are illegal. Used with PDF417 and MicroPDF417
BARCODE_PDF_READ_MODE_3_BASIC [0x5000] Basic Channel Mode. Transmit ] L0 symbology ID. No escape doubling. Macro PDF is illegal. ECI is illegal. Reserved code words are illegal. Used with PDF417 and MicroPDF417.
BARCODE_PDF_READ_MODE_3_EXTENDED [0x8000] Extended Channel Mode. Transmit ] L0 symbology ID. Escape doubling. Macro PDF is transmitted. ECI is transmitted in GLI format. Reserved code words transmitted. Used with PDF417 and MicroPDF417.
BARCODE_MICRO_PDF_READ_BASIC [0x9000] Code 128 Emulation Basic Channel Mode. Transmit ] L0, ] L3, ] L4, or ] L5 symbology ID. No escape doubling. Macro PDF is illegal. ECI is illegal. Reserved code words are illegal. Only used with MicroPDF417.
BARCODE_MICRO_PDF_READ_EXTENDED [0xC000] Code 128 Emulation Extended Channel Mode. Transmit ] L0, ] L3, ] L4, or ] L5 symbology ID. Escape doubling. Macro PDF is transmitted. ECI is transmitted in GLI format. Reserved code words transmitted. Only used with MicroPDF417.
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.
BARCODE_PDF_FASTREAD [0x02000000] Enables fast find feature when reading PDF417 symbols.
BARCODE_PDF_NO_INDICATORS_TRIAL [0x10000000] Enables reading PDF417 symbols without indicators.
BARCODE_MICRO_PDF_READ_CCA3COLS [0x20000000] Enables reading MicroPDF417 CCA 3 Columns symbols..

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.

pfnCallback

Optional callback function to be called when a barcode symbolgoy is decoded correctly. If you do not provide callback function, use NULL as the value of this parameter. If you do provide callback function, use the function pointer as the value of this parameter. The callback function must adhere to the function prototype described in BARCODEREADCALLBACK Function.

pUserData

Void pointer that you can use to pass one or more additional parameters that the help callback function needs. To use this feature, assign a value to a variable or create a structure that contains as many fields as you need. Then, in this parameter, pass the address of the variable or structure, casting it to L_VOID *. The callback function, which receives the address in its own pUserData parameter, can cast it to a pointer of the appropriate data type to access your variable or structure. If the additional parameters are not needed, you can pass NULL in this parameter.

Comments

NOTE: Type RSS14 is now GS1 Databar. All references to RSS14 now refer to GS1 Databar.

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 flag is used with all barcode kinds.

The BARCODE_RETURNCHECK flag used only with reading linear barcodes.

The BARCODE_RRESIZESMALL1D flag should be used when reading 1D symbols that have small width per module especially if the image has a low dpi value.

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 reading barcodes from poor quality images, use BARCODE_APPLY_PREPROCESSING to enable image segmentation and advanced image preprocessing during barcode recognition.

When reading 2D barcodes, LEADTOOLS can perform internal auto preprocessing using BARCODE_DOUBLE_PASS on the image and try again if the engine cannot detect the barcode required. But this may take extra processing which will increase the barcode detection time. Hence, it is not recommended to always have it enabled except in certain situations:

The LEADTOOLS Barcode Demo leaves the option disabled by default.

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); 

Help Version 20.0.2020.4.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Barcode C++ Class Library Help