diff options
Diffstat (limited to 'src/render.h')
-rw-r--r-- | src/render.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/render.h b/src/render.h new file mode 100644 index 0000000..6c268a1 --- /dev/null +++ b/src/render.h @@ -0,0 +1,67 @@ +#ifndef CMARK_RENDER_H +#define CMARK_RENDER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdlib.h> +#include "buffer.h" +#include "chunk.h" + +typedef enum { + LITERAL, + NORMAL, + TITLE, + URL +} cmark_escaping; + +struct cmark_render_state { + int options; + cmark_strbuf* buffer; + cmark_strbuf* prefix; + int column; + int width; + int need_cr; + bufsize_t last_breakable; + int enumlevel; + bool begin_line; + bool no_wrap; + bool in_tight_list_item; + void (*outc)(struct cmark_render_state*, + cmark_escaping, + int32_t, + unsigned char); +}; + +typedef struct cmark_render_state cmark_render_state; + +void cr(cmark_render_state *state); + +void blankline(cmark_render_state *state); + +void out(cmark_render_state *state, + cmark_chunk str, + bool wrap, + cmark_escaping escape); + +void lit(cmark_render_state *state, char *s, bool wrap); + +char* +cmark_render(cmark_node *root, + int options, + int width, + void (*outc)(cmark_render_state*, + cmark_escaping, + int32_t, + unsigned char), + int (*render_node)(cmark_node *node, + cmark_event_type ev_type, + cmark_render_state *state)); + + +#ifdef __cplusplus +} +#endif + +#endif |