Fortunately you don't have to do it all by yourself. libzvbi provides export modules converting a vbi_page into the desired format or rendering directly into memory.
A minimalistic export example:
static void export_my_page (vbi_page *pg) { vbi_export *ex; char *errstr; if (!(ex = vbi_export_new ("html", &errstr))) { fprintf (stderr, "Cannot export as HTML: %s\n", errstr); free (errstr); return; } if (!vbi_export_file (ex, "my_page.html", pg)) puts (vbi_export_errstr (ex)); vbi_export_delete (ex); }
typedef struct vbi_export vbi_export |
Export module instance, an opaque object.
Allocate with vbi_export_new().
enum vbi_option_type |
vbi_export_info* vbi_export_info_enum | ( | int | index | ) |
index | Index into the export module list, 0 ... n. |
Some modules may depend on machine features or the presence of certain libraries, thus the list can vary from session to session.
NULL
if the index is out of bounds. vbi_export_info* vbi_export_info_keyword | ( | const char * | keyword | ) |
keyword | Export module identifier as in vbi_export_info and vbi_export_new(). |
NULL
if the named export module has not been found. vbi_export_info* vbi_export_info_export | ( | vbi_export * | export | ) |
export | Pointer to a vbi_export object previously allocated with vbi_export_new(). |
NULL
if export is NULL
. vbi_export* vbi_export_new | ( | const char * | keyword, | |
char ** | errstr | |||
) |
keyword | Export module identifier as in vbi_export_info. | |
errstr | If not NULL this function stores a pointer to an error description here. You must free() this string when no longer needed. |
keyword | like this: |
vbi_export_new ("keyword; quality=75.5, comment=\"example text\"");
NULL
is returned and the errstr may be set (else NULL) if some problem occurred. void vbi_export_delete | ( | vbi_export * | export | ) |
export | Pointer to a vbi_export object previously allocated with vbi_export_new(). Can be NULL . |
vbi_option_info* vbi_export_option_info_enum | ( | vbi_export * | export, | |
int | index | |||
) |
export | Pointer to a initialized vbi_export object. | |
index | Index in the option table 0 ... n. |
NULL
if index is out of bounds. vbi_option_info* vbi_export_option_info_keyword | ( | vbi_export * | export, | |
const char * | keyword | |||
) |
export | Pointer to a initialized vbi_export object. | |
keyword | Keyword of the option as in vbi_option_info. |
NULL
if the keyword wasn't found. vbi_bool vbi_export_option_set | ( | vbi_export * | export, | |
const char * | keyword, | |||
... | ||||
) |
export | Pointer to a initialized vbi_export object. | |
keyword | Keyword identifying the option, as in vbi_option_info. | |
... | New value to set. |
Typical usage of vbi_export_option_set():
vbi_export_option_set (export, "quality", 75.5);
Mind that options of type VBI_OPTION_MENU
must be set by menu entry number (int), all other options by value. If necessary it will be replaced by the closest value possible. Use function vbi_export_option_menu_set() to set options with menu by menu entry.
TRUE
on success, otherwise the option is not changed. vbi_bool vbi_export_option_get | ( | vbi_export * | export, | |
const char * | keyword, | |||
vbi_option_value * | value | |||
) |
export | Pointer to a initialized vbi_export object. | |
keyword | Keyword identifying the option, as in vbi_option_info. | |
value | A place to store the current option value. |
TRUE
on success, otherwise value unchanged. vbi_bool vbi_export_option_menu_set | ( | vbi_export * | export, | |
const char * | keyword, | |||
int | entry | |||
) |
export | Pointer to a initialized vbi_export object. | |
keyword | Keyword identifying the option, as in vbi_option_info. | |
entry | Menu entry to be selected. |
TRUE
on success, otherwise the option is not changed. vbi_bool vbi_export_option_menu_get | ( | vbi_export * | export, | |
const char * | keyword, | |||
int * | entry | |||
) |
export | Pointer to a initialized vbi_export object. | |
keyword | Keyword identifying the option, as in vbi_option_info. | |
entry | A place to store the current menu entry. |
TRUE
on success, otherwise value remained unchanged. vbi_bool vbi_export_stdio | ( | vbi_export * | export, | |
FILE * | fp, | |||
vbi_page * | pg | |||
) |
export | Pointer to a initialized vbi_export object. | |
fp | Buffered i/o stream to write to. | |
pg | Page to be exported. |
You can call this function as many times as you want, it does not change vbi_export state or the vbi_page.
TRUE
on success. vbi_bool vbi_export_file | ( | vbi_export * | export, | |
const char * | name, | |||
vbi_page * | pg | |||
) |
export | Pointer to a initialized vbi_export object. | |
name | File to be created. | |
pg | Page to be exported. |
You can call this function as many times as you want, it does not change vbi_export state or the vbi_page.
TRUE
on success. char* vbi_export_errstr | ( | vbi_export * | export | ) |
export | Pointer to a initialized vbi_export object. |