#include <pango/pangocairo.h>
+static int opt_annotate = 0;
+
typedef struct
{
const CairoViewerIface *iface;
gpointer state)
{
cairo_t *cr = (cairo_t *) context;
- int annotate = GPOINTER_TO_INT (state) % 3;
+ int annotate = (GPOINTER_TO_INT (state) + opt_annotate) % 3;
cairo_save (cr);
cairo_translate (cr, x, y);
state);
}
+static GOptionGroup *
+pangocairo_view_get_option_group (const PangoViewer *klass G_GNUC_UNUSED)
+{
+ GOptionEntry entries[] =
+ {
+ {"annotate", 0, 0, G_OPTION_ARG_INT, &opt_annotate,
+ "Annotate the output", "1 or 2"},
+ {NULL}
+ };
+ GOptionGroup *group;
+
+ group = g_option_group_new ("cairo",
+ "Cairo backend options:",
+ "Options understood by the cairo backend",
+ NULL,
+ NULL);
+
+ g_option_group_add_entries (group, entries);
+
+ cairo_viewer_add_options (group);
+
+ return group;
+}
+
const PangoViewer pangocairo_viewer = {
"PangoCairo",
"cairo",
#endif
pangocairo_view_create_window,
pangocairo_view_destroy_window,
- pangocairo_view_display
+ pangocairo_view_display,
+ NULL,
+ NULL,
+ pangocairo_view_get_option_group
};
gpointer data G_GNUC_UNUSED,
GError **error)
{
- char *possible_values = NULL;
gboolean ret;
char buf[32];
int len;
{"backend", 0, backend_flag, G_OPTION_ARG_CALLBACK, &parse_backend,
backend_desc, backend_options},
{"background", 0, 0, G_OPTION_ARG_CALLBACK, &parse_background,
- "Set the background color", "red/#rrggbb/#rrggbbaa/transparent/etc"},
+ "Set the background color", "red/#rrggbb/#rrggbbaa/transparent"},
{"no-display", 'q', G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &opt_display,
"Do not display (just write to file or whatever)", NULL},
{"dpi", 0, 0, G_OPTION_ARG_INT, &opt_dpi,
{"font", 0, 0, G_OPTION_ARG_STRING, &opt_font,
"Set the font description", "description"},
{"foreground", 0, 0, G_OPTION_ARG_CALLBACK, &parse_foreground,
- "Set the text color", "red/#rrggbb/#rrggbbaa/etc"},
+ "Set the text color", "red/#rrggbb/#rrggbbaa"},
{"gravity", 0, 0, G_OPTION_ARG_CALLBACK, &parse_gravity,
"Base gravity: glyph rotation", "south/east/north/west/auto"},
{"gravity-hint", 0, 0, G_OPTION_ARG_CALLBACK, &parse_gravity_hint,
GError *parse_error = NULL;
GOptionContext *context;
size_t len;
+ const PangoViewer **viewer;
prog_name = g_path_get_basename (argv[0]);
context = g_option_context_new ("- FILE");
g_option_context_add_main_entries (context, entries, NULL);
+
+ for (viewer = viewers; *viewer; viewer++)
+ if ((*viewer)->get_option_group)
+ {
+ GOptionGroup *group = (*viewer)->get_option_group (*viewer);
+ if (group)
+ g_option_context_add_group (context, group);
+ }
+
if (!g_option_context_parse (context, &argc, &argv, &parse_error))
{
if (parse_error != NULL)