libvisio-rs 0.2.1

A Rust library for parsing Microsoft Visio files (.vsdx and .vsd) and converting to SVG
Documentation
#ifndef LIBVISIO_RS_H
#define LIBVISIO_RS_H

/* This file is auto-generated by cbindgen. Do not edit. */

#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>

#define VSD_FOREIGN_DATA 12

#define VSD_OLE_LIST 13

#define VSD_TEXT 14

#define VSD_PAGE 21

#define VSD_COLORS 22

#define VSD_FONT_IX 25

#define VSD_STENCILS 29

#define VSD_STENCIL_PAGE 30

#define VSD_OLE_DATA 31

#define VSD_PAGES 39

#define VSD_NAME_LIST2 50

#define VSD_NAME2 51

#define VSD_NAMEIDX123 52

#define VSD_PAGE_SHEET 70

#define VSD_SHAPE_GROUP 71

#define VSD_SHAPE_SHAPE 72

#define VSD_SHAPE_FOREIGN 78

#define VSD_SHAPE_LIST 101

#define VSD_CHAR_LIST 105

#define VSD_PARA_LIST 106

#define VSD_GEOM_LIST 108

#define VSD_SHAPE_ID 131

#define VSD_LINE 133

#define VSD_FILL_AND_SHADOW 134

#define VSD_TEXT_BLOCK 135

#define VSD_GEOMETRY 137

#define VSD_MOVE_TO 138

#define VSD_LINE_TO 139

#define VSD_ARC_TO 140

#define VSD_ELLIPSE 143

#define VSD_ELLIPTICAL_ARC_TO 144

#define VSD_PAGE_PROPS 146

#define VSD_CHAR_IX 148

#define VSD_PARA_IX 149

#define VSD_FOREIGN_DATA_TYPE 152

#define VSD_CONNECTION_POINTS 153

#define VSD_XFORM_DATA 155

#define VSD_TEXT_XFORM 156

#define VSD_XFORM_1D 157

#define VSD_SPLINE_START 165

#define VSD_SPLINE_KNOT 166

#define VSD_LAYER_MEMBERSHIP 167

#define VSD_INFINITE_LINE 141

#define VSD_POLYLINE_TO 193

#define VSD_NURBS_TO 195

#define VSD_NAMEIDX 201

#define VSD_FONTFACE 215

#define VSD_FONTFACES 216

#define VSD_NAME 45

/**
 * Opaque handle to a parsed Visio document.
 */
typedef struct VisioDocument {
    Document inner;
} VisioDocument;

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

/**
 * Open and parse a Visio file. Returns null on error.
 * # Safety
 * `path` must be a valid null-terminated C string.
 */
LIBVISIO_API struct VisioDocument *visio_open(const char *path);

/**
 * Get the number of pages.
 * # Safety
 * `doc` must be a valid pointer returned by `visio_open`.
 */
LIBVISIO_API uintptr_t visio_get_page_count(const struct VisioDocument *doc);

/**
 * Convert a page to SVG. Returns null on error.
 * Caller must free with visio_free_string.
 * # Safety
 * `doc` must be a valid pointer returned by `visio_open`.
 */
LIBVISIO_API char *visio_convert_page_to_svg(const struct VisioDocument *doc, uintptr_t page);

/**
 * Extract all text from the document.
 * Caller must free with visio_free_string.
 * # Safety
 * `doc` must be a valid pointer returned by `visio_open`.
 */
LIBVISIO_API char *visio_extract_text(const struct VisioDocument *doc);

/**
 * Free a VisioDocument handle.
 * # Safety
 * `doc` must be a valid pointer from `visio_open`, or null.
 */
LIBVISIO_API void visio_free(struct VisioDocument *doc);

/**
 * Free a string returned by visio_convert_page_to_svg or visio_extract_text.
 * # Safety
 * `s` must be a valid pointer returned by a `visio_*` function, or null.
 */
LIBVISIO_API void visio_free_string(char *s);

#ifdef __cplusplus
}  // extern "C"
#endif  // __cplusplus

#endif  /* LIBVISIO_RS_H */