lglBarcode

lglBarcode — Barcode structure

Synopsis

#include <libglbarcode/lgl-barcode.h>

                    lglBarcode;

lglBarcode *        lgl_barcode_new                     (void);
void                lgl_barcode_free                    (lglBarcode *bc);

enum                lglBarcodeShapeType;
                    lglBarcodeShape;
                    lglBarcodeShapeAny;
                    lglBarcodeShapeLine;
                    lglBarcodeShapeBox;
                    lglBarcodeShapeChar;
                    lglBarcodeShapeString;
                    lglBarcodeShapeRing;
                    lglBarcodeShapeHexagon;

void                lgl_barcode_add_line                (lglBarcode *bc,
                                                         gdouble x,
                                                         gdouble y,
                                                         gdouble length,
                                                         gdouble width);
void                lgl_barcode_add_box                 (lglBarcode *bc,
                                                         gdouble x,
                                                         gdouble y,
                                                         gdouble width,
                                                         gdouble height);
void                lgl_barcode_add_char                (lglBarcode *bc,
                                                         gdouble x,
                                                         gdouble y,
                                                         gdouble fsize,
                                                         gchar c);
void                lgl_barcode_add_string              (lglBarcode *bc,
                                                         gdouble x,
                                                         gdouble y,
                                                         gdouble fsize,
                                                         gchar *string,
                                                         gsize length);
void                lgl_barcode_add_ring                (lglBarcode *bc,
                                                         gdouble x,
                                                         gdouble y,
                                                         gdouble radius,
                                                         gdouble line_width);
void                lgl_barcode_add_hexagon             (lglBarcode *bc,
                                                         gdouble x,
                                                         gdouble y,
                                                         gdouble height);

Description

This section describes the lglBarcode structure and the lglBarcodeShape family of simple drawing primitives. These structures form the basic intermediate barcode representation used by libglbarcode. The section also defines a set of functions for constructing an lglBarcode structure and populating it with drawing primitives.

Details

lglBarcode

typedef struct {
        gdouble  width;
        gdouble  height;

        GList   *shapes;    /* List of lglBarcodeShape drawing primitives */
} lglBarcode;

This structure contains the libglbarcode intermediate barcode format. This structure contains a simple vectorized representation of the barcode. This vectorized representation is easy to interpret by a rendering backend for either vector or raster formats. A simple API is provided for constructing barcodes in this format.

gdouble width;

Width of barcode bounding box (points)

gdouble height;

Height of barcode bounding box (points)

GList *shapes;

List of lglBarcodeShape drawing primitives

lgl_barcode_new ()

lglBarcode *        lgl_barcode_new                     (void);

Allocate a new lglBarcode structure.

This function allocates a new lglBarcode structure.

Note

This function is intended to be used internally by barcode implementations. Typically an end-user would use lgl_barcode_create() instead.

Returns :

A newly allocated lglBarcode structure. Use lgl_barcode_free() to free it.

lgl_barcode_free ()

void                lgl_barcode_free                    (lglBarcode *bc);

Free a previously allocated lglBarcode structure.

bc :

The lglBarcode structure to free

enum lglBarcodeShapeType

typedef enum {
        LGL_BARCODE_SHAPE_LINE,
        LGL_BARCODE_SHAPE_BOX,
        LGL_BARCODE_SHAPE_CHAR,
        LGL_BARCODE_SHAPE_STRING,
        LGL_BARCODE_SHAPE_RING,
        LGL_BARCODE_SHAPE_HEXAGON
} lglBarcodeShapeType;


lglBarcodeShape

typedef union {

        lglBarcodeShapeType    type;
        lglBarcodeShapeAny     any;

        lglBarcodeShapeLine    line;
        lglBarcodeShapeBox     box;
        lglBarcodeShapeChar    bchar;
        lglBarcodeShapeString  string;
        lglBarcodeShapeRing    ring;
        lglBarcodeShapeHexagon hexagon;

} lglBarcodeShape;


lglBarcodeShapeAny

typedef struct {
        /* Begin Common Fields */
        lglBarcodeShapeType  type;
        gdouble              x;
        gdouble              y;
        /* End Common Fields */
} lglBarcodeShapeAny;


lglBarcodeShapeLine

typedef struct {
        /* Begin Common Fields */
        lglBarcodeShapeType  type; /* Always LGL_BARCODE_SHAPE_LINE. */
        gdouble              x;
        gdouble              y;
        /* End Common Fields */

        gdouble              length;
        gdouble              width;
} lglBarcodeShapeLine;

A vertical line drawing primitive.


@ =  origin (x,y) from top left corner of barcode

             +--@--+
             |     |
             |     |
             |     |
             |     | length
             |     |
             |     |
             |     |
             +-----+
              width

All units are in points ( 1 point = 1/72 inch ).

lglBarcodeShapeType type;

Always LGL_BARCODE_SHAPE_LINE

gdouble x;

x coordinate of top of line

gdouble y;

y coordinate of top of line

gdouble length;

Length of line

gdouble width;

Width of line

lglBarcodeShapeBox

typedef struct {
        /* Begin Common Fields */
        lglBarcodeShapeType  type; /* Always LGL_BARCODE_SHAPE_BOX. */
        gdouble              x;
        gdouble              y;
        /* End Common Fields */

        gdouble              width;
        gdouble              height;
} lglBarcodeShapeBox;

A solid box drawing primitive.


@ =  origin (x,y) from top left corner of barcode

             @---------+
             |         |
             |         |
             |         |
             |         | height
             |         |
             |         |
             |         |
             +---------+
                width

All units are in points ( 1 point = 1/72 inch ).

lglBarcodeShapeType type;

Always LGL_BARCODE_SHAPE_BOX

gdouble x;

x coordinate of top left corner of box

gdouble y;

y coordinate of top left corner of box

gdouble width;

Width of box

gdouble height;

Height of box

lglBarcodeShapeChar

typedef struct {
        /* Begin Common Fields */
        lglBarcodeShapeType  type; /* Always LGL_BARCODE_SHAPE_CHAR. */
        gdouble              x;
        gdouble              y;
        /* End Common Fields */

        gdouble              fsize;
        gchar                c;
} lglBarcodeShapeChar;

An single byte character drawing primitive.


@ =  origin (x,y) from top left corner of barcode

             ____ ------------
            /    \           ^
           /  /\  \          |
          /  /__\  \         |
         /  ______  \        | ~fsize
        /  /      \  \       |
       /__/        \__\      |
                             v
      @ ----------------------

All units are in points ( 1 point = 1/72 inch ).

lglBarcodeShapeType type;

Always LGL_BARCODE_SHAPE_CHAR

gdouble x;

x coordinate of left baseline of character

gdouble y;

y coordinate of left baseline of character

gdouble fsize;

Font size

gchar c;

Character to add

lglBarcodeShapeString

typedef struct {
        /* Begin Common Fields */
        lglBarcodeShapeType  type; /* Always LGL_BARCODE_SHAPE_STRING. */
        gdouble              x;
        gdouble              y;
        /* End Common Fields */

        gdouble              fsize;
        gchar               *string;
} lglBarcodeShapeString;

A character string drawing primitive.


@ =  origin (x,y) from top left corner of barcode

             ____        _  ------------------
            /    \      | |                  ^
           /  /\  \     | |                  |
          /  /__\  \    | |___     ____      |
         /  ______  \   | ._  \   /  __|     | ~fsize
        /  /      \  \  | |_)  | |  (__      |
       /__/        \__\ |_.___/   \____|     |
                                             v
                          @ ------------------
                          x = horizontal center

All units are in points ( 1 point = 1/72 inch ).

lglBarcodeShapeType type;

Always LGL_BARCODE_SHAPE_STRING

gdouble x;

x coordinate of horizontal center of baseline of string

gdouble y;

y coordinate of horizontal center of baseline of string

gdouble fsize;

Font size

gchar *string;

String to add

lglBarcodeShapeRing

typedef struct {
        /* Begin Common Fields */
        lglBarcodeShapeType  type; /* Always LGL_BARCODE_SHAPE_RING. */
        gdouble              x;
        gdouble              y;
        /* End Common Fields */

        gdouble              radius;
        gdouble              line_width;
} lglBarcodeShapeRing;

A ring (an open circle) drawing primitive.


@ = origin (x,y) is centre of circle

               v  line_width
          _.-""""-._
        .'   ____   `.
       /   .'  ^ `.   \
      |   /        \   |
      |   |    @---|---|------
      |   \        /   |     ^
       \   `.____.'   /      | radius
        `._    ...._.'.......|
           `-....-'

All units are in points ( 1 point = 1/72 inch ).

lglBarcodeShapeType type;

Always LGL_BARCODE_SHAPE_RING

gdouble x;

x coordinate of center of circle

gdouble y;

y coordinate of center of circle

gdouble radius;

Radius of ring (center of line)

gdouble line_width;

Width of line

lglBarcodeShapeHexagon

typedef struct {
        /* Begin Common Fields */
        lglBarcodeShapeType  type; /* Always LGL_BARCODE_SHAPE_HEXAGON. */
        gdouble              x;
        gdouble              y;
        /* End Common Fields */

        gdouble              height;
} lglBarcodeShapeHexagon;

A solid regular hexagon (oriented with vertexes at top and bottom) drawing primitive.


@ = origin (x,y) is top of hexagon

                 @ ------------------
             _-"   "-_              ^
         _-"           "-_          |
      +"                   "+       |
      |                     |       |
      |                     |       |
      |                     |       | height
      |                     |       |
      |                     |       |
      +_                   _+       |
        "-_             _-"         |
           "-_       _-"            |
              "-_ _-"               v
                 " ------------------

All units are in points ( 1 point = 1/72 inch ).

lglBarcodeShapeType type;

Always LGL_BARCODE_SHAPE_HEXAGON

gdouble x;

x coordinate of top point of hexagon

gdouble y;

y coordinate of top point of hexagon

gdouble height;

Height of hexagon

lgl_barcode_add_line ()

void                lgl_barcode_add_line                (lglBarcode *bc,
                                                         gdouble x,
                                                         gdouble y,
                                                         gdouble length,
                                                         gdouble width);

Add a vertical line to barcode. Coordinates are relative to top left corner of barcode. All units are in points ( 1 point = 1/72 inch ).

Note

This function is intended to be used internally by barcode implementations.

bc :

An lglBarcode structure

x :

x coordinate of top of line

y :

y coordinate of top of line

length :

Length of line

width :

Width of line

lgl_barcode_add_box ()

void                lgl_barcode_add_box                 (lglBarcode *bc,
                                                         gdouble x,
                                                         gdouble y,
                                                         gdouble width,
                                                         gdouble height);

Add a box to barcode. Coordinates are relative to top left corner of barcode. All units are in points ( 1 point = 1/72 inch ).

Note

This function is intended to be used internally by barcode implementations.

bc :

An lglBarcode structure

x :

x coordinate of top left corner of box

y :

y coordinate of top left corner of box

width :

Width of box

height :

Height of box

lgl_barcode_add_char ()

void                lgl_barcode_add_char                (lglBarcode *bc,
                                                         gdouble x,
                                                         gdouble y,
                                                         gdouble fsize,
                                                         gchar c);

Add an ASCII character to barcode. Coordinates are relative to top left corner of barcode. All units are in points ( 1 point = 1/72 inch ).

Note

This function is intended to be used internally by barcode implementations.

bc :

An lglBarcode structure

x :

x coordinate of left baseline of character

y :

y coordinate of left baseline of character

fsize :

Font size

c :

Character to add

lgl_barcode_add_string ()

void                lgl_barcode_add_string              (lglBarcode *bc,
                                                         gdouble x,
                                                         gdouble y,
                                                         gdouble fsize,
                                                         gchar *string,
                                                         gsize length);

Add a character string to barcode. Coordinates are relative to top left corner of barcode. All units are in points ( 1 point = 1/72 inch ).

Note

This function is intended to be used internally by barcode implementations.

bc :

An lglBarcode structure

x :

x coordinate of horizontal center of baseline of string

y :

y coordinate of horizontal center of baseline of string

fsize :

Font size

string :

String to add

length :

Number of bytes in string

lgl_barcode_add_ring ()

void                lgl_barcode_add_ring                (lglBarcode *bc,
                                                         gdouble x,
                                                         gdouble y,
                                                         gdouble radius,
                                                         gdouble line_width);

Add a ring to barcode. Coordinates are relative to top left corner of barcode. All units are in points ( 1 point = 1/72 inch ).

Note

This function is intended to be used internally by barcode implementations.

bc :

An lglBarcode structure

x :

x coordinate of center of circle

y :

y coordinate of center of circle

radius :

Radius of ring (center of line)

line_width :

Width of line

lgl_barcode_add_hexagon ()

void                lgl_barcode_add_hexagon             (lglBarcode *bc,
                                                         gdouble x,
                                                         gdouble y,
                                                         gdouble height);

Add a regular hexagon (oriented with vertexes at top and bottom) to barcode. Coordinates are relative to top left corner of barcode. All units are in points ( 1 point = 1/72 inch ).

Note

This function is intended to be used internally by barcode implementations.

bc :

An lglBarcode structure

x :

x coordinate of top point of hexagon

y :

y coordinate of top point of hexagon

height :

Height of hexagon