summaryrefslogtreecommitdiffstats
path: root/src/libpaps.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libpaps.h')
-rw-r--r--src/libpaps.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/src/libpaps.h b/src/libpaps.h
new file mode 100644
index 0000000..7c05a33
--- /dev/null
+++ b/src/libpaps.h
@@ -0,0 +1,110 @@
+/**
+ * @file libpaps.h
+ *
+ * @brief Interface for converting pango layouts into postscript.
+ *
+ * The library is used by first creating a paps object through
+ * paps_new(). The paps object is then used to generate PostScript
+ * for one or more pango layouts through paps_layout_to_postscript_strdup()
+ * or paps_layout_line_to_postscript_strdup(). Once all the layouts
+ * have been processed, the system may generate the PostScript header through
+ * paps_get_postscript_header_strdup(). It
+ * is the responsibility of the caller to place the PostScript
+ * header in front of the renderings of the pango layouts.
+ *
+ * The PostScript of the rendered layouts is relocatable in all
+ * sense so any postscript operators may be used to change their
+ * colors, transformations etc.
+ */
+#ifndef LIBPAPS_H
+#define LIBPAPS_H
+
+#include <glib.h>
+#include <pango/pango.h>
+
+typedef void paps_t;
+
+/**
+ * Create a new paps object that may subsequently be used for
+ * generating postscript strings.
+ *
+ * @return
+ */
+paps_t *paps_new();
+
+/**
+ * Delete the paps object and free any allocated memory associated with
+ * it.
+ *
+ * @param paps
+ */
+void paps_free(paps_t *paps);
+
+/**
+ * libpaps may currently be used only with a PangoContext that it
+ * is creating. The context returned may of course be changed though
+ * by any routines related to a PangoContext.
+ *
+ * @return
+ */
+PangoContext *paps_get_pango_context();
+
+/**
+ * paps_get_postscript_header_strdup() returns the header and the
+ * font definitions related to the glyphs being used. This routine
+ * must only be called after the processing of all the strings is
+ * over.
+ *
+ * @param paps Paps object
+ *
+ * @return A newly allocated string containing the postscript prologue
+ * needed for the postscript strings created by libpaps.
+ */
+gchar *paps_get_postscript_header_strdup(paps_t *paps);
+
+/**
+ * Create postscript related to a PangoLayout at position pos_x,
+ * pos_y (postscript coordinates). The related font definitions
+ * are stored internally and will be returned when doing
+ * paps_get_postscript_header_strdup.
+ *
+ * @param paps Paps object
+ * @param pos_x x-position
+ * @param pos_y y-position
+ * @param layout Layout to render
+ *
+ * @return
+ */
+gchar *paps_layout_to_postscript_strdup(paps_t *paps,
+ double pos_x,
+ double pos_y,
+ PangoLayout *layout);
+/**
+ * Create postscript related to a single PangoLayout line at position
+ * pos_x, pos_y (postscript coordinates). The related font definitions
+ * are stored internally and will be returned when doing
+ * paps_get_postscript_header_strdup.
+ *
+ * @param paps Paps object
+ * @param pos_x x-position
+ * @param pos_y y-position
+ * @param layout_line Layout line to render
+ *
+ * @return
+ */
+gchar *paps_layout_line_to_postscript_strdup(paps_t *paps_,
+ double pos_x,
+ double pos_y,
+ PangoLayoutLine *layout_line);
+
+/**
+ * Utility function that translates from postscript points to pango
+ * units.
+ *
+ * @param points
+ *
+ * @return
+ */
+double paps_postscript_points_to_pango(double points);
+
+#endif /* LIBPAPS */