summaryrefslogtreecommitdiff
path: root/capi/include/resvg.h
diff options
context:
space:
mode:
Diffstat (limited to 'capi/include/resvg.h')
-rw-r--r--capi/include/resvg.h102
1 files changed, 96 insertions, 6 deletions
diff --git a/capi/include/resvg.h b/capi/include/resvg.h
index 8bfd4ac..e01c30b 100644
--- a/capi/include/resvg.h
+++ b/capi/include/resvg.h
@@ -5,14 +5,43 @@
#ifndef RESVG_H
#define RESVG_H
+#include <stdbool.h>
+
#ifdef RESVG_CAIRO_BACKEND
#include <cairo.h>
#endif
-struct resvg_render_tree;
+typedef struct resvg_handle resvg_handle;
typedef struct resvg_render_tree resvg_render_tree;
+typedef struct resvg_color {
+ unsigned char r;
+ unsigned char g;
+ unsigned char b;
+} resvg_color;
+
+typedef enum resvg_fit_to_type {
+ RESVG_FIT_TO_ORIGINAL,
+ RESVG_FIT_TO_WIDTH,
+ RESVG_FIT_TO_HEIGHT,
+ RESVG_FIT_TO_ZOOM,
+} resvg_fit_to_type;
+
+typedef struct resvg_fit_to {
+ resvg_fit_to_type type;
+ float value;
+} resvg_fit_to;
+
+typedef struct resvg_options {
+ const char *path;
+ double dpi;
+ resvg_fit_to fit_to;
+ bool draw_background;
+ resvg_color background;
+ bool keep_named_groups;
+} resvg_options;
+
typedef struct resvg_rect {
double x;
double y;
@@ -20,9 +49,31 @@ typedef struct resvg_rect {
double height;
} resvg_rect;
+typedef struct resvg_transform {
+ double a;
+ double b;
+ double c;
+ double d;
+ double e;
+ double f;
+} resvg_transform;
+
+
+resvg_handle* resvg_init();
+void resvg_destroy(resvg_handle *handle);
void resvg_init_log();
+void resvg_init_options(resvg_options *opt)
+{
+ opt->path = NULL;
+ opt->dpi = 96;
+ opt->fit_to.type = RESVG_FIT_TO_ORIGINAL;
+ opt->fit_to.value = 0;
+ opt->draw_background = false;
+ opt->keep_named_groups = false;
+}
+
/**
* @brief Creates <b>resvg_render_tree</b> from file.
*
@@ -34,7 +85,7 @@ void resvg_init_log();
* @return Parsed render tree. NULL on error. Should be destroyed via resvg_rtree_destroy.
*/
resvg_render_tree *resvg_parse_rtree_from_file(const char *file_path,
- double dpi,
+ const resvg_options *opt,
char **error);
/**
@@ -46,28 +97,67 @@ resvg_render_tree *resvg_parse_rtree_from_file(const char *file_path,
* @return Parsed render tree. NULL on error. Should be destroyed via resvg_rtree_destroy.
*/
resvg_render_tree *resvg_parse_rtree_from_data(const char *text,
- double dpi,
+ const resvg_options *opt,
char **error);
-void resvg_get_image_size(resvg_render_tree *rtree,
+void resvg_get_image_size(const resvg_render_tree *rtree,
double *width,
double *height);
+bool resvg_node_exists(const resvg_render_tree *rtree,
+ const char *id);
+
+bool resvg_get_node_transform(const resvg_render_tree *rtree,
+ const char *id,
+ resvg_transform *ts);
+
void resvg_rtree_destroy(resvg_render_tree *rtree);
void resvg_error_msg_destroy(char *msg);
#ifdef RESVG_CAIRO_BACKEND
-void resvg_cairo_render_to_canvas(resvg_render_tree *rtree,
+bool resvg_cairo_get_node_bbox(const resvg_render_tree *rtree,
+ const resvg_options *opt,
+ const char *id,
+ resvg_rect *bbox);
+
+bool resvg_cairo_render_to_image(const resvg_render_tree *rtree,
+ const resvg_options *opt,
+ const char *file_path);
+
+void resvg_cairo_render_to_canvas(const resvg_render_tree *rtree,
+ const resvg_options *opt,
resvg_rect view,
cairo_t *cr);
+
+void resvg_cairo_render_to_canvas_by_id(const resvg_render_tree *rtree,
+ const resvg_options *opt,
+ resvg_rect view,
+ const char *id,
+ void *painter);
#endif
#ifdef RESVG_QT_BACKEND
-void resvg_qt_render_to_canvas(resvg_render_tree *rtree,
+bool resvg_qt_get_node_bbox(const resvg_render_tree *rtree,
+ const resvg_options *opt,
+ const char *id,
+ resvg_rect *bbox);
+
+bool resvg_qt_render_to_image(const resvg_render_tree *rtree,
+ const resvg_options *opt,
+ const char *file_path);
+
+void resvg_qt_render_to_canvas(const resvg_render_tree *rtree,
+ const resvg_options *opt,
resvg_rect view,
void *painter);
+
+void resvg_qt_render_to_canvas_by_id(const resvg_render_tree *rtree,
+ const resvg_options *opt,
+ resvg_rect view,
+ const char *id,
+ void *painter);
#endif
#endif // RESVG_H