ZBar Bar Code Reader Library  version 0.10
qrdec.c File Reference

Classes

struct  qr_aff
 
struct  qr_finder
 
struct  qr_finder_center
 
struct  qr_finder_cluster
 
struct  qr_finder_edge_pt
 
struct  qr_finder_lines
 
struct  qr_hom
 
struct  qr_hom_cell
 
struct  qr_pack_buf
 
struct  qr_reader
 
struct  qr_sampling_grid
 

Macros

#define QR_ALIGN_SUBPREC
 
#define QR_HOM_BITS
 
#define QR_INT_BITS
 
#define QR_INT_LOGBITS
 
#define QR_LARGE_VERSION_SLACK
 
#define QR_SMALL_VERSION_SLACK
 

Typedefs

typedef struct qr_aff qr_aff
 
typedef struct qr_finder qr_finder
 
typedef struct qr_finder_center qr_finder_center
 
typedef struct qr_finder_cluster qr_finder_cluster
 
typedef struct qr_finder_edge_pt qr_finder_edge_pt
 
typedef struct qr_finder_lines qr_finder_lines
 
typedef struct qr_hom qr_hom
 
typedef struct qr_hom_cell qr_hom_cell
 
typedef int qr_line[3]
 
typedef struct qr_pack_buf qr_pack_buf
 
typedef struct qr_sampling_grid qr_sampling_grid
 

Functions

qr_reader_zbar_qr_create (void)
 
int _zbar_qr_decode (qr_reader *reader, zbar_image_scanner_t *iscn, zbar_image_t *img)
 
void _zbar_qr_destroy (qr_reader *reader)
 
int _zbar_qr_found_line (qr_reader *reader, int dir, const qr_finder_line *line)
 
void _zbar_qr_reset (qr_reader *reader)
 
static int bch18_6_correct (unsigned *_y)
 
static void qr_aff_init (qr_aff *_aff, const qr_point _p0, const qr_point _p1, const qr_point _p2, int _res)
 
static int qr_aff_line_step (const qr_aff *_aff, qr_line _l, int _v, int _du, int *_dv)
 
static void qr_aff_project (qr_point _p, const qr_aff *_aff, int _u, int _v)
 
static void qr_aff_unproject (qr_point _q, const qr_aff *_aff, int _x, int _y)
 
static unsigned qr_alignment_pattern_fetch (qr_point _p[5][5], int _x0, int _y0, const unsigned char *_img, int _width, int _height)
 
static int qr_alignment_pattern_search (qr_point _p, const qr_hom_cell *_cell, int _u, int _v, int _r, const unsigned char *_img, int _width, int _height)
 
static int qr_cmp_edge_pt (const void *_a, const void *_b)
 
static void qr_code_data_clear (qr_code_data *_qrdata)
 
static void qr_code_data_list_add (qr_code_data_list *_qrlist, qr_code_data *_qrdata)
 
void qr_code_data_list_clear (qr_code_data_list *_qrlist)
 
void qr_code_data_list_init (qr_code_data_list *_qrlist)
 
static int qr_code_data_parse (qr_code_data *_qrdata, int _version, const unsigned char *_data, int _ndata)
 
static int qr_code_decode (qr_code_data *_qrdata, const rs_gf256 *_gf, const qr_point _ul_pos, const qr_point _ur_pos, const qr_point _dl_pos, int _version, int _fmt_info, const unsigned char *_img, int _width, int _height)
 
static int qr_code_ncodewords (unsigned _version)
 
static void qr_data_mask_fill (unsigned *_mask, int _dim, int _pattern)
 
static int qr_finder_center_cmp (const void *_a, const void *_b)
 
static int qr_finder_centers_locate (qr_finder_center **_centers, qr_finder_edge_pt **_edge_pts, qr_reader *reader, int _width, int _height)
 
static int qr_finder_cluster_lines (qr_finder_cluster *_clusters, qr_finder_line **_neighbors, qr_finder_line *_lines, int _nlines, int _v)
 
static void qr_finder_edge_pts_aff_classify (qr_finder *_f, const qr_aff *_aff)
 
static int qr_finder_edge_pts_fill (qr_finder_edge_pt *_edge_pts, int _nedge_pts, qr_finder_cluster **_neighbors, int _nneighbors, int _v)
 
static void qr_finder_edge_pts_hom_classify (qr_finder *_f, const qr_hom *_hom)
 
static int qr_finder_estimate_module_size_and_version (qr_finder *_f, int _width, int _height)
 
static int qr_finder_find_crossings (qr_finder_center *_centers, qr_finder_edge_pt *_edge_pts, qr_finder_cluster *_hclusters, int _nhclusters, qr_finder_cluster *_vclusters, int _nvclusters)
 
static int qr_finder_fmt_info_decode (qr_finder *_ul, qr_finder *_ur, qr_finder *_dl, const qr_hom *_hom, const unsigned char *_img, int _width, int _height)
 
static int qr_finder_lines_are_crossing (const qr_finder_line *_hline, const qr_finder_line *_vline)
 
static int qr_finder_locate_crossing (const unsigned char *_img, int _width, int _height, int _x0, int _y0, int _x1, int _y1, int _v, qr_point _p)
 
static int qr_finder_quick_crossing_check (const unsigned char *_img, int _width, int _height, int _x0, int _y0, int _x1, int _y1, int _v)
 
static void qr_finder_ransac (qr_finder *_f, const qr_aff *_hom, isaac_ctx *_isaac, int _e)
 
static int qr_finder_version_decode (qr_finder *_f, const qr_hom *_hom, const unsigned char *_img, int _width, int _height, int _dir)
 
static int qr_finder_vline_cmp (const void *_a, const void *_b)
 
static int qr_hamming_dist (unsigned _y1, unsigned _y2, int _maxdiff)
 
static void qr_hom_cell_fproject (qr_point _p, const qr_hom_cell *_cell, int _x, int _y, int _w)
 
static void qr_hom_cell_init (qr_hom_cell *_cell, int _u0, int _v0, int _u1, int _v1, int _u2, int _v2, int _u3, int _v3, int _x0, int _y0, int _x1, int _y1, int _x2, int _y2, int _x3, int _y3)
 
static void qr_hom_cell_project (qr_point _p, const qr_hom_cell *_cell, int _u, int _v, int _res)
 
static int qr_hom_fit (qr_hom *_hom, qr_finder *_ul, qr_finder *_ur, qr_finder *_dl, qr_point _p[4], const qr_aff *_aff, isaac_ctx *_isaac, const unsigned char *_img, int _width, int _height)
 
static void qr_hom_fproject (qr_point _p, const qr_hom *_hom, int _x, int _y, int _w)
 
static void qr_hom_init (qr_hom *_hom, int _x0, int _y0, int _x1, int _y1, int _x2, int _y2, int _x3, int _y3, int _res)
 
static int qr_hom_unproject (qr_point _q, const qr_hom *_hom, int _x, int _y)
 
static int qr_img_get_bit (const unsigned char *_img, int _width, int _height, int _x, int _y)
 
static int qr_line_eval (qr_line _line, int _x, int _y)
 
static void qr_line_fit (qr_line _l, int _x0, int _y0, int _sxx, int _sxy, int _syy, int _res)
 
static int qr_line_fit_finder_edge (qr_line _l, const qr_finder *_f, int _e, int _res)
 
static void qr_line_fit_finder_pair (qr_line _l, const qr_aff *_aff, const qr_finder *_f0, const qr_finder *_f1, int _e)
 
static void qr_line_fit_points (qr_line _l, qr_point *_p, int _np, int _res)
 
static int qr_line_isect (qr_point _p, const qr_line _l0, const qr_line _l1)
 
static void qr_line_orient (qr_line _l, int _x, int _y)
 
static int qr_pack_buf_avail (const qr_pack_buf *_b)
 
static void qr_pack_buf_init (qr_pack_buf *_b, const unsigned char *_data, int _ndata)
 
static int qr_pack_buf_read (qr_pack_buf *_b, int _bits)
 
static int qr_point_ccw (const qr_point _p0, const qr_point _p1, const qr_point _p2)
 
static unsigned qr_point_distance2 (const qr_point _p1, const qr_point _p2)
 
static void qr_point_translate (qr_point _point, int _dx, int _dy)
 
static void qr_reader_init (qr_reader *reader)
 
void qr_reader_match_centers (qr_reader *_reader, qr_code_data_list *_qrlist, qr_finder_center *_centers, int _ncenters, const unsigned char *_img, int _width, int _height)
 
static int qr_reader_try_configuration (qr_reader *_reader, qr_code_data *_qrdata, const unsigned char *_img, int _width, int _height, qr_finder_center *_c[3])
 
static void qr_samples_unpack (unsigned char **_blocks, int _nblocks, int _nshort_data, int _nshort_blocks, const unsigned *_data_bits, const unsigned *_fp_mask, int _dim)
 
static void qr_sampling_grid_clear (qr_sampling_grid *_grid)
 
static void qr_sampling_grid_fp_mask_rect (qr_sampling_grid *_grid, int _dim, int _u, int _v, int _w, int _h)
 
static void qr_sampling_grid_init (qr_sampling_grid *_grid, int _version, const qr_point _ul_pos, const qr_point _ur_pos, const qr_point _dl_pos, qr_point _p[4], const unsigned char *_img, int _width, int _height)
 
static int qr_sampling_grid_is_in_fp (const qr_sampling_grid *_grid, int _dim, int _u, int _v)
 
static void qr_sampling_grid_sample (const qr_sampling_grid *_grid, unsigned *_data_bits, int _dim, int _fmt_info, const unsigned char *_img, int _width, int _height)
 
static void qr_svg_centers (const qr_finder_center *centers, int ncenters)
 
static void qr_svg_points (const char *cls, qr_point *p, int n)
 

Variables

static const unsigned BCH18_6_CODES [34]
 
static const unsigned char QR_ALIGNMENT_SPACING [34]
 
static const unsigned char QR_ALNUM_TABLE [45]
 
static const unsigned char QR_RS_NBLOCKS [40][4]
 
static const unsigned char QR_RS_NPAR_OFFS [40]
 
static const unsigned char QR_RS_NPAR_VALS [71]
 

Macro Definition Documentation

#define QR_ALIGN_SUBPREC
#define QR_HOM_BITS

Referenced by qr_hom_fit().

#define QR_LARGE_VERSION_SLACK
#define QR_SMALL_VERSION_SLACK

Typedef Documentation

typedef struct qr_aff qr_aff
typedef struct qr_finder qr_finder
typedef struct qr_hom qr_hom
typedef struct qr_hom_cell qr_hom_cell
typedef int qr_line[3]
typedef struct qr_pack_buf qr_pack_buf

Function Documentation

qr_reader* _zbar_qr_create ( void  )

References qr_reader_init().

Referenced by zbar_image_scanner_create().

Here is the call graph for this function:

Here is the caller graph for this function:

void _zbar_qr_destroy ( qr_reader reader)

References qr_finder_lines::clines, qr_reader::finder_lines, qr_finder_lines::lines, and zprintf.

Referenced by zbar_image_scanner_destroy().

Here is the caller graph for this function:

int _zbar_qr_found_line ( qr_reader reader,
int  dir,
const qr_finder_line line 
)

References qr_finder_lines::clines, qr_reader::finder_lines, qr_finder_lines::lines, and qr_finder_lines::nlines.

Referenced by _zbar_image_scanner_add_sym().

Here is the caller graph for this function:

void _zbar_qr_reset ( qr_reader reader)

References qr_reader::finder_lines, and qr_finder_lines::nlines.

Referenced by zbar_scan_image().

Here is the caller graph for this function:

static int bch18_6_correct ( unsigned *  _y)
static

References BCH18_6_CODES, qr_hamming_dist(), x, and y.

Referenced by qr_finder_version_decode().

Here is the call graph for this function:

Here is the caller graph for this function:

static void qr_aff_init ( qr_aff _aff,
const qr_point  _p0,
const qr_point  _p1,
const qr_point  _p2,
int  _res 
)
static

References qr_aff::fwd, qr_aff::inv, QR_DIVROUND, qr_point_ccw(), qr_aff::res, qr_aff::x0, and qr_aff::y0.

Referenced by qr_reader_try_configuration().

Here is the call graph for this function:

Here is the caller graph for this function:

static int qr_aff_line_step ( const qr_aff _aff,
qr_line  _l,
int  _v,
int  _du,
int *  _dv 
)
static

References qr_aff::fwd, QR_DIVROUND, qr_ilog(), QR_INT_BITS, and QR_MAXI.

Referenced by qr_hom_fit().

Here is the call graph for this function:

Here is the caller graph for this function:

static void qr_aff_project ( qr_point  _p,
const qr_aff _aff,
int  _u,
int  _v 
)
static

References qr_aff::fwd, qr_aff::res, qr_aff::x0, and qr_aff::y0.

Referenced by qr_hom_fit(), qr_img_get_bit(), and qr_line_fit_finder_pair().

Here is the caller graph for this function:

static void qr_aff_unproject ( qr_point  _q,
const qr_aff _aff,
int  _x,
int  _y 
)
static

References qr_aff::inv, qr_aff::x0, and qr_aff::y0.

Referenced by qr_finder_edge_pts_aff_classify(), qr_finder_ransac(), qr_hom_fit(), and qr_reader_try_configuration().

Here is the caller graph for this function:

static unsigned qr_alignment_pattern_fetch ( qr_point  _p[5][5],
int  _x0,
int  _y0,
const unsigned char *  _img,
int  _width,
int  _height 
)
static

References qr_img_get_bit().

Referenced by qr_alignment_pattern_search().

Here is the call graph for this function:

Here is the caller graph for this function:

static int qr_alignment_pattern_search ( qr_point  _p,
const qr_hom_cell _cell,
int  _u,
int  _v,
int  _r,
const unsigned char *  _img,
int  _width,
int  _height 
)
static
static int qr_cmp_edge_pt ( const void _a,
const void _b 
)
static

References qr_finder_edge_pt::edge, and qr_finder_edge_pt::extent.

Referenced by qr_finder_edge_pts_aff_classify(), and qr_finder_edge_pts_hom_classify().

Here is the caller graph for this function:

static void qr_code_data_clear ( qr_code_data _qrdata)
static
static void qr_code_data_list_add ( qr_code_data_list _qrlist,
qr_code_data _qrdata 
)
static

References qr_code_data_list::cqrdata, qr_code_data_list::nqrdata, and qr_code_data_list::qrdata.

Referenced by qr_reader_match_centers().

Here is the caller graph for this function:

void qr_code_data_list_clear ( qr_code_data_list _qrlist)

References qr_code_data_list::nqrdata, qr_code_data_clear(), qr_code_data_list_init(), and qr_code_data_list::qrdata.

Referenced by _zbar_qr_decode().

Here is the call graph for this function:

Here is the caller graph for this function:

void qr_code_data_list_init ( qr_code_data_list _qrlist)

References qr_code_data_list::cqrdata, qr_code_data_list::nqrdata, and qr_code_data_list::qrdata.

Referenced by _zbar_qr_decode(), and qr_code_data_list_clear().

Here is the caller graph for this function:

static int qr_code_decode ( qr_code_data _qrdata,
const rs_gf256 _gf,
const qr_point  _ul_pos,
const qr_point  _ur_pos,
const qr_point  _dl_pos,
int  _version,
int  _fmt_info,
const unsigned char *  _img,
int  _width,
int  _height 
)
static
static int qr_code_ncodewords ( unsigned  _version)
static

Referenced by qr_code_decode().

Here is the caller graph for this function:

static void qr_data_mask_fill ( unsigned *  _mask,
int  _dim,
int  _pattern 
)
static

References QR_INT_BITS, and QR_INT_LOGBITS.

Referenced by qr_sampling_grid_sample().

Here is the caller graph for this function:

static int qr_finder_center_cmp ( const void _a,
const void _b 
)
static

References qr_finder_center::nedge_pts, and qr_finder_center::pos.

Referenced by qr_finder_find_crossings().

Here is the caller graph for this function:

static int qr_finder_centers_locate ( qr_finder_center **  _centers,
qr_finder_edge_pt **  _edge_pts,
qr_reader reader,
int  _width,
int  _height 
)
static

References qr_reader::finder_lines, qr_finder_lines::lines, qr_finder_lines::nlines, qr_finder_cluster_lines(), qr_finder_find_crossings(), qr_finder_vline_cmp(), and QR_MINI.

Referenced by _zbar_qr_decode().

Here is the call graph for this function:

Here is the caller graph for this function:

static int qr_finder_cluster_lines ( qr_finder_cluster _clusters,
qr_finder_line **  _neighbors,
qr_finder_line _lines,
int  _nlines,
int  _v 
)
static
static void qr_finder_edge_pts_aff_classify ( qr_finder _f,
const qr_aff _aff 
)
static
static int qr_finder_edge_pts_fill ( qr_finder_edge_pt _edge_pts,
int  _nedge_pts,
qr_finder_cluster **  _neighbors,
int  _nneighbors,
int  _v 
)
static
static void qr_finder_edge_pts_hom_classify ( qr_finder _f,
const qr_hom _hom 
)
static
static int qr_finder_estimate_module_size_and_version ( qr_finder _f,
int  _width,
int  _height 
)
static
static int qr_finder_find_crossings ( qr_finder_center _centers,
qr_finder_edge_pt _edge_pts,
qr_finder_cluster _hclusters,
int  _nhclusters,
qr_finder_cluster _vclusters,
int  _nvclusters 
)
static
static int qr_finder_fmt_info_decode ( qr_finder _ul,
qr_finder _ur,
qr_finder _dl,
const qr_hom _hom,
const unsigned char *  _img,
int  _width,
int  _height 
)
static

References bch15_5_correct(), qr_hom::fwd, qr_hom::fwd22, qr_finder::o, qr_hom_fproject(), qr_img_get_bit(), qr_finder::size, x, and y.

Referenced by qr_reader_try_configuration().

Here is the call graph for this function:

Here is the caller graph for this function:

static int qr_finder_lines_are_crossing ( const qr_finder_line _hline,
const qr_finder_line _vline 
)
static

References qr_finder_line::len, and qr_finder_line::pos.

Referenced by qr_finder_find_crossings().

Here is the caller graph for this function:

static int qr_finder_locate_crossing ( const unsigned char *  _img,
int  _width,
int  _height,
int  _x0,
int  _y0,
int  _x1,
int  _y1,
int  _v,
qr_point  _p 
)
static

References QR_FINDER_SUBPREC.

Referenced by qr_alignment_pattern_search(), and qr_hom_fit().

Here is the caller graph for this function:

static int qr_finder_quick_crossing_check ( const unsigned char *  _img,
int  _width,
int  _height,
int  _x0,
int  _y0,
int  _x1,
int  _y1,
int  _v 
)
static

Referenced by qr_hom_fit().

Here is the caller graph for this function:

static int qr_finder_version_decode ( qr_finder _f,
const qr_hom _hom,
const unsigned char *  _img,
int  _width,
int  _height,
int  _dir 
)
static

References bch18_6_correct(), qr_hom::fwd, qr_hom::fwd22, qr_finder::o, qr_hom_fproject(), qr_img_get_bit(), qr_finder::size, x, and y.

Referenced by qr_reader_try_configuration().

Here is the call graph for this function:

Here is the caller graph for this function:

static int qr_finder_vline_cmp ( const void _a,
const void _b 
)
static

References qr_finder_line::pos.

Referenced by qr_finder_centers_locate().

Here is the caller graph for this function:

static int qr_hamming_dist ( unsigned  _y1,
unsigned  _y2,
int  _maxdiff 
)
static

References y.

Referenced by bch18_6_correct(), and qr_alignment_pattern_search().

Here is the caller graph for this function:

static void qr_hom_cell_fproject ( qr_point  _p,
const qr_hom_cell _cell,
int  _x,
int  _y,
int  _w 
)
static
static void qr_hom_cell_init ( qr_hom_cell _cell,
int  _u0,
int  _v0,
int  _u1,
int  _v1,
int  _u2,
int  _v2,
int  _u3,
int  _v3,
int  _x0,
int  _y0,
int  _x1,
int  _y1,
int  _x2,
int  _y2,
int  _x3,
int  _y3 
)
static

References qr_hom_cell::fwd, QR_ALIGN_SUBPREC, QR_DIVROUND, QR_FIXMUL, QR_FLIPSIGNI, qr_ilog(), QR_INT_BITS, QR_MAXI, qr_hom_cell::u0, qr_hom_cell::v0, x, qr_hom_cell::x0, y, and qr_hom_cell::y0.

Referenced by qr_hom_fit(), and qr_sampling_grid_init().

Here is the call graph for this function:

Here is the caller graph for this function:

static void qr_hom_cell_project ( qr_point  _p,
const qr_hom_cell _cell,
int  _u,
int  _v,
int  _res 
)
static

References qr_hom_cell::fwd, qr_hom_cell_fproject(), qr_hom_cell::u0, and qr_hom_cell::v0.

Referenced by qr_sampling_grid_init().

Here is the call graph for this function:

Here is the caller graph for this function:

static void qr_hom_fproject ( qr_point  _p,
const qr_hom _hom,
int  _x,
int  _y,
int  _w 
)
static

References qr_hom::fwd, qr_hom::fwd22, QR_DIVROUND, qr_hom::x0, and qr_hom::y0.

Referenced by qr_finder_fmt_info_decode(), and qr_finder_version_decode().

Here is the caller graph for this function:

static void qr_hom_init ( qr_hom _hom,
int  _x0,
int  _y0,
int  _x1,
int  _y1,
int  _x2,
int  _y2,
int  _x3,
int  _y3,
int  _res 
)
static

References qr_hom::fwd, qr_hom::fwd22, qr_hom::inv, qr_hom::inv22, QR_EXTMUL, QR_FIXMUL, qr_ilog(), QR_INT_BITS, QR_MAXI, qr_hom::res, qr_hom::x0, and qr_hom::y0.

Referenced by qr_hom_fit().

Here is the call graph for this function:

Here is the caller graph for this function:

static int qr_hom_unproject ( qr_point  _q,
const qr_hom _hom,
int  _x,
int  _y 
)
static

References qr_hom::inv, qr_hom::inv22, QR_DIVROUND, qr_hom::res, x, qr_hom::x0, y, and qr_hom::y0.

Referenced by qr_finder_edge_pts_hom_classify(), and qr_reader_try_configuration().

Here is the caller graph for this function:

static int qr_img_get_bit ( const unsigned char *  _img,
int  _width,
int  _height,
int  _x,
int  _y 
)
static

References fclose(), qr_finder::o, qr_aff_project(), QR_CLAMPI, QR_FINDER_SUBPREC, qr_ilog(), qr_aff::res, qr_hom::res, qr_finder::size, and y.

Referenced by qr_alignment_pattern_fetch(), qr_finder_fmt_info_decode(), qr_finder_version_decode(), and qr_sampling_grid_sample().

Here is the call graph for this function:

Here is the caller graph for this function:

static int qr_line_eval ( qr_line  _line,
int  _x,
int  _y 
)
static

Referenced by qr_hom_fit(), qr_line_orient(), and qr_reader_try_configuration().

Here is the caller graph for this function:

static void qr_line_fit ( qr_line  _l,
int  _x0,
int  _y0,
int  _sxx,
int  _sxy,
int  _syy,
int  _res 
)
static

References qr_ihypot(), qr_ilog(), and QR_MAXI.

Referenced by qr_line_fit_points().

Here is the call graph for this function:

Here is the caller graph for this function:

static int qr_line_fit_finder_edge ( qr_line  _l,
const qr_finder _f,
int  _e,
int  _res 
)
static

References qr_finder::c, qr_finder::edge_pts, qr_finder::ninliers, qr_finder_edge_pt::pos, qr_finder_center::pos, qr_line_fit_points(), and qr_line_orient().

Referenced by qr_hom_fit(), and qr_reader_try_configuration().

Here is the call graph for this function:

Here is the caller graph for this function:

static void qr_line_fit_finder_pair ( qr_line  _l,
const qr_aff _aff,
const qr_finder _f0,
const qr_finder _f1,
int  _e 
)
static

References qr_finder::c, qr_finder::edge_pts, qr_finder::ninliers, qr_finder::o, qr_finder_edge_pt::pos, qr_finder_center::pos, qr_aff_project(), qr_line_fit_points(), qr_line_orient(), QR_MAXI, qr_aff::res, and qr_finder::size.

Referenced by qr_hom_fit().

Here is the call graph for this function:

Here is the caller graph for this function:

static void qr_line_fit_points ( qr_line  _l,
qr_point _p,
int  _np,
int  _res 
)
static

References qr_ilog(), QR_INT_BITS, qr_line_fit(), QR_MAXI, and QR_MINI.

Referenced by qr_hom_fit(), qr_line_fit_finder_edge(), and qr_line_fit_finder_pair().

Here is the call graph for this function:

Here is the caller graph for this function:

static int qr_line_isect ( qr_point  _p,
const qr_line  _l0,
const qr_line  _l1 
)
static

References QR_DIVROUND, x, and y.

Referenced by qr_hom_fit().

Here is the caller graph for this function:

static void qr_line_orient ( qr_line  _l,
int  _x,
int  _y 
)
static

References qr_line_eval().

Referenced by qr_line_fit_finder_edge(), and qr_line_fit_finder_pair().

Here is the call graph for this function:

Here is the caller graph for this function:

static int qr_pack_buf_avail ( const qr_pack_buf _b)
static

References qr_pack_buf::endbit, qr_pack_buf::endbyte, and qr_pack_buf::storage.

Referenced by qr_code_data_parse().

Here is the caller graph for this function:

static void qr_pack_buf_init ( qr_pack_buf _b,
const unsigned char *  _data,
int  _ndata 
)
static

References qr_pack_buf::buf, qr_pack_buf::endbit, qr_pack_buf::endbyte, and qr_pack_buf::storage.

Referenced by qr_code_data_parse().

Here is the caller graph for this function:

static int qr_pack_buf_read ( qr_pack_buf _b,
int  _bits 
)
static

References qr_pack_buf::buf, qr_pack_buf::endbit, qr_pack_buf::endbyte, and qr_pack_buf::storage.

Referenced by qr_code_data_parse().

Here is the caller graph for this function:

static int qr_point_ccw ( const qr_point  _p0,
const qr_point  _p1,
const qr_point  _p2 
)
static

Referenced by qr_aff_init(), qr_finder_ransac(), qr_reader_match_centers(), and qr_reader_try_configuration().

Here is the caller graph for this function:

static unsigned qr_point_distance2 ( const qr_point  _p1,
const qr_point  _p2 
)
static

Referenced by qr_finder_ransac(), and qr_reader_try_configuration().

Here is the caller graph for this function:

static void qr_point_translate ( qr_point  _point,
int  _dx,
int  _dy 
)
static

Referenced by qr_finder_edge_pts_aff_classify(), qr_finder_edge_pts_hom_classify(), and qr_finder_ransac().

Here is the caller graph for this function:

static void qr_reader_init ( qr_reader reader)
static

References qr_reader::gf, qr_reader::isaac, isaac_init(), QR_PPOLY, and rs_gf256_init().

Referenced by _zbar_qr_create().

Here is the call graph for this function:

Here is the caller graph for this function:

void qr_reader_match_centers ( qr_reader _reader,
qr_code_data_list _qrlist,
qr_finder_center _centers,
int  _ncenters,
const unsigned char *  _img,
int  _width,
int  _height 
)

References qr_code_data::bbox, qr_code_data_list::nqrdata, qr_finder_center::pos, qr_code_data_list_add(), QR_FINDER_SUBPREC, qr_point_ccw(), qr_reader_try_configuration(), qr_code_data_list::qrdata, and version().

Referenced by _zbar_qr_decode().

Here is the call graph for this function:

Here is the caller graph for this function:

static void qr_samples_unpack ( unsigned char **  _blocks,
int  _nblocks,
int  _nshort_data,
int  _nshort_blocks,
const unsigned *  _data_bits,
const unsigned *  _fp_mask,
int  _dim 
)
static

References QR_INT_BITS, QR_INT_LOGBITS, and QR_MINI.

Referenced by qr_code_decode().

Here is the caller graph for this function:

static void qr_sampling_grid_clear ( qr_sampling_grid _grid)
static
static void qr_sampling_grid_fp_mask_rect ( qr_sampling_grid _grid,
int  _dim,
int  _u,
int  _v,
int  _w,
int  _h 
)
static

References qr_sampling_grid::fpmask, QR_INT_BITS, and QR_INT_LOGBITS.

Referenced by qr_sampling_grid_init().

Here is the caller graph for this function:

static void qr_sampling_grid_init ( qr_sampling_grid _grid,
int  _version,
const qr_point  _ul_pos,
const qr_point  _ur_pos,
const qr_point  _dl_pos,
qr_point  _p[4],
const unsigned char *  _img,
int  _width,
int  _height 
)
static
static int qr_sampling_grid_is_in_fp ( const qr_sampling_grid _grid,
int  _dim,
int  _u,
int  _v 
)
static

References qr_sampling_grid::fpmask, QR_INT_BITS, and QR_INT_LOGBITS.

Referenced by qr_sampling_grid_clear(), and qr_sampling_grid_sample().

Here is the caller graph for this function:

static void qr_sampling_grid_sample ( const qr_sampling_grid _grid,
unsigned *  _data_bits,
int  _dim,
int  _fmt_info,
const unsigned char *  _img,
int  _width,
int  _height 
)
static
static void qr_svg_centers ( const qr_finder_center centers,
int  ncenters 
)
inlinestatic
static void qr_svg_points ( const char *  cls,
qr_point p,
int  n 
)
inlinestatic

References svg_path_end, svg_path_moveto, and svg_path_start.

Referenced by qr_sampling_grid_init().

Here is the caller graph for this function:

Variable Documentation

const unsigned BCH18_6_CODES[34]
static

Referenced by bch18_6_correct().

const unsigned char QR_ALIGNMENT_SPACING[34]
static

Referenced by qr_sampling_grid_init().

const unsigned char QR_ALNUM_TABLE[45]
static

Referenced by qr_code_data_parse().

const unsigned char QR_RS_NBLOCKS[40][4]
static

Referenced by qr_code_decode().

const unsigned char QR_RS_NPAR_OFFS[40]
static

Referenced by qr_code_decode().

const unsigned char QR_RS_NPAR_VALS[71]
static

Referenced by qr_code_decode().