diff options
author | Christopher James Lahey <clahey@helixcode.com> | 2000-06-11 05:13:07 +0800 |
---|---|---|
committer | Chris Lahey <clahey@src.gnome.org> | 2000-06-11 05:13:07 +0800 |
commit | 5dc1015e9666ef59682c46e306ed3a4add0a9356 (patch) | |
tree | 7bc125bde4c0c8064d0bd9a4c9733b1faf15e5bd | |
parent | 3976b6b155858f116261befc5aeb435de7e06c65 (diff) | |
download | gsoc2013-evolution-5dc1015e9666ef59682c46e306ed3a4add0a9356.tar.gz gsoc2013-evolution-5dc1015e9666ef59682c46e306ed3a4add0a9356.tar.zst gsoc2013-evolution-5dc1015e9666ef59682c46e306ed3a4add0a9356.zip |
Added e-printable.c and e-printable.h.
2000-06-10 Christopher James Lahey <clahey@helixcode.com>
* Makefile.am: Added e-printable.c and e-printable.h.
* e-printable.c, e-printable.h: This new class is a printing
context. Other classes return an EPrintable which represents a
context for printing that object.
* e-util.c, e-util.h: Added
e_marshal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL and
e_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE.
svn path=/trunk/; revision=3510
-rw-r--r-- | e-util/ChangeLog | 12 | ||||
-rw-r--r-- | e-util/Makefile.am | 2 | ||||
-rw-r--r-- | e-util/e-printable.c | 172 | ||||
-rw-r--r-- | e-util/e-printable.h | 58 | ||||
-rw-r--r-- | e-util/e-util.c | 64 | ||||
-rw-r--r-- | e-util/e-util.c-8611 | 64 | ||||
-rw-r--r-- | e-util/e-util.h | 12 | ||||
-rw-r--r-- | e-util/e-util.h-29002 | 12 | ||||
-rw-r--r-- | widgets/misc/e-printable.c | 172 | ||||
-rw-r--r-- | widgets/misc/e-printable.h | 58 |
10 files changed, 604 insertions, 22 deletions
diff --git a/e-util/ChangeLog b/e-util/ChangeLog index bd49777d0c..636486f392 100644 --- a/e-util/ChangeLog +++ b/e-util/ChangeLog @@ -1,3 +1,15 @@ +2000-06-10 Christopher James Lahey <clahey@helixcode.com> + + * Makefile.am: Added e-printable.c and e-printable.h. + + * e-printable.c, e-printable.h: This new class is a printing + context. Other classes return an EPrintable which represents a + context for printing that object. + + * e-util.c, e-util.h: Added + e_marshal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL and + e_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE. + 2000-06-01 Christopher James Lahey <clahey@helixcode.com> * e-util.c: Fixed e_marshal_INT__INT_INT_POINTER. diff --git a/e-util/Makefile.am b/e-util/Makefile.am index cfed75a936..136e76aaa9 100644 --- a/e-util/Makefile.am +++ b/e-util/Makefile.am @@ -22,6 +22,8 @@ libeutil_la_SOURCES = \ e-html-utils.h \ e-popup-menu.c \ e-popup-menu.h \ + e-printable.c \ + e-printable.h \ e-setup.c \ e-setup.h \ e-sexp.c \ diff --git a/e-util/e-printable.c b/e-util/e-printable.c new file mode 100644 index 0000000000..27170fef84 --- /dev/null +++ b/e-util/e-printable.c @@ -0,0 +1,172 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * e-printable.c: an object printer. + * + * Author: + * Christopher James Lahey <clahey@helixcode.com> + * + * (C) 2000 Helix Code, Inc. + */ +#include <config.h> +#include <gtk/gtksignal.h> +#include "e-util.h" +#include "e-printable.h" + +#define EP_CLASS(e) ((EPrintableClass *)((GtkObject *)e)->klass) + +#define PARENT_TYPE gtk_object_get_type () + + +static GtkObjectClass *e_printable_parent_class; + +enum { + PRINT_PAGE, + DATA_LEFT, + RESET, + HEIGHT, + LAST_SIGNAL +}; + +static guint e_printable_signals [LAST_SIGNAL] = { 0, }; + +static void +e_printable_class_init (GtkObjectClass *object_class) +{ + EPrintableClass *klass = E_PRINTABLE_CLASS(object_class); + e_printable_parent_class = gtk_type_class (PARENT_TYPE); + + e_printable_signals [PRINT_PAGE] = + gtk_signal_new ("print_page", + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (EPrintableClass, print_page), + e_marshal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL, + GTK_TYPE_NONE, 4, GTK_TYPE_OBJECT, GTK_TYPE_DOUBLE, GTK_TYPE_DOUBLE, GTK_TYPE_BOOL); + + e_printable_signals [DATA_LEFT] = + gtk_signal_new ("data_left", + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (EPrintableClass, data_left), + gtk_marshal_BOOL__NONE, + GTK_TYPE_BOOL, 0, GTK_TYPE_NONE); + + e_printable_signals [RESET] = + gtk_signal_new ("reset", + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (EPrintableClass, reset), + gtk_marshal_NONE__NONE, + GTK_TYPE_NONE, 0, GTK_TYPE_NONE); + + e_printable_signals [HEIGHT] = + gtk_signal_new ("height", + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (EPrintableClass, height), + e_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE, + GTK_TYPE_DOUBLE, 3, GTK_TYPE_OBJECT, GTK_TYPE_DOUBLE, GTK_TYPE_DOUBLE); + + gtk_object_class_add_signals (object_class, e_printable_signals, LAST_SIGNAL); + + klass->print_page = NULL; + klass->data_left = NULL; + klass->reset = NULL; + klass->height = NULL; +} + + +guint +e_printable_get_type (void) +{ + static guint type = 0; + + if (!type) + { + GtkTypeInfo info = + { + "EPrintable", + sizeof (EPrintable), + sizeof (EPrintableClass), + (GtkClassInitFunc) e_printable_class_init, + NULL, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + type = gtk_type_unique (gtk_object_get_type (), &info); + } + + return type; +} + +EPrintable * +e_printable_new(void) +{ + return E_PRINTABLE(gtk_type_new(e_printable_get_type())); +} + +void +e_printable_print_page (EPrintable *e_printable, + GnomePrintContext *context, + gdouble width, + gdouble height, + gboolean quantized) +{ + g_return_if_fail (e_printable != NULL); + g_return_if_fail (E_IS_PRINTABLE (e_printable)); + + gtk_signal_emit (GTK_OBJECT (e_printable), + e_printable_signals [PRINT_PAGE], + context, + width, + height, + quantized); +} + +gboolean +e_printable_data_left (EPrintable *e_printable) +{ + gboolean ret_val; + + g_return_val_if_fail (e_printable != NULL, FALSE); + g_return_val_if_fail (E_IS_PRINTABLE (e_printable), FALSE); + + gtk_signal_emit (GTK_OBJECT (e_printable), + e_printable_signals [DATA_LEFT], + &ret_val); + + return ret_val; +} + +void +e_printable_reset (EPrintable *e_printable) +{ + g_return_if_fail (e_printable != NULL); + g_return_if_fail (E_IS_PRINTABLE (e_printable)); + + gtk_signal_emit (GTK_OBJECT (e_printable), + e_printable_signals [RESET]); +} + +gdouble +e_printable_height (EPrintable *e_printable, + GnomePrintContext *context, + gdouble width, + gdouble max_height) +{ + gdouble ret_val; + + g_return_val_if_fail (e_printable != NULL, -1); + g_return_val_if_fail (E_IS_PRINTABLE (e_printable), -1); + + gtk_signal_emit (GTK_OBJECT (e_printable), + e_printable_signals [HEIGHT], + context, + width, + max_height, + &ret_val); + + return ret_val; +} diff --git a/e-util/e-printable.h b/e-util/e-printable.h new file mode 100644 index 0000000000..2f8532e0ec --- /dev/null +++ b/e-util/e-printable.h @@ -0,0 +1,58 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * e-printable.h: an object printer. + * + * Author: + * Christopher James Lahey <clahey@helixcode.com> + * + * (C) 2000 Helix Code, Inc. + */ +#ifndef _E_PRINTABLE_H_ +#define _E_PRINTABLE_H_ + +#include <gtk/gtkobject.h> +#include <libgnomeprint/gnome-print.h> + +#define E_PRINTABLE_TYPE (e_printable_get_type ()) +#define E_PRINTABLE(o) (GTK_CHECK_CAST ((o), E_PRINTABLE_TYPE, EPrintable)) +#define E_PRINTABLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_PRINTABLE_TYPE, EPrintableClass)) +#define E_IS_PRINTABLE(o) (GTK_CHECK_TYPE ((o), E_PRINTABLE_TYPE)) +#define E_IS_PRINTABLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_PRINTABLE_TYPE)) + +typedef struct { + GtkObject base; +} EPrintable; + +typedef struct { + GtkObjectClass parent_class; + + /* + * Signals + */ + + void (*print_page) (EPrintable *etm, GnomePrintContext *context, gdouble width, gdouble height, gboolean quantized); + gboolean (*data_left) (EPrintable *etm); + void (*reset) (EPrintable *etm); + gdouble (*height) (EPrintable *etm, GnomePrintContext *context, gdouble width, gdouble max_height); +} EPrintableClass; + +GtkType e_printable_get_type (void); + +EPrintable *e_printable_new (void); + +/* + * Routines for emitting signals on the e_table + */ +void e_printable_print_page (EPrintable *e_printable, + GnomePrintContext *context, + gdouble width, + gdouble height, + gboolean quantized); +gboolean e_printable_data_left (EPrintable *e_printable); +void e_printable_reset (EPrintable *e_printable); +gdouble e_printable_height (EPrintable *e_printable, + GnomePrintContext *context, + gdouble width, + gdouble max_height); + +#endif /* _E_PRINTABLE_H_ */ diff --git a/e-util/e-util.c b/e-util/e-util.c index 2571a0fbc3..a9c122eb74 100644 --- a/e-util/e-util.c +++ b/e-util/e-util.c @@ -160,22 +160,68 @@ e_write_file(const char *filename, const char *data, int flags) return 0; } -typedef gint (*GtkSignal_NONE__INT_INT_POINTER) (GtkObject * object, - gint arg1, - gint arg2, - gpointer arg3, - gpointer user_data); +typedef gint (*GtkSignal_INT__INT_INT_POINTER) (GtkObject * object, + gint arg1, + gint arg2, + gpointer arg3, + gpointer user_data); void e_marshal_INT__INT_INT_POINTER (GtkObject * object, GtkSignalFunc func, gpointer func_data, GtkArg * args) { - GtkSignal_NONE__INT_INT_POINTER rfunc; + GtkSignal_INT__INT_INT_POINTER rfunc; gint *return_val; return_val = GTK_RETLOC_INT (args[3]); - rfunc = (GtkSignal_NONE__INT_INT_POINTER) func; + rfunc = (GtkSignal_INT__INT_INT_POINTER) func; *return_val = (*rfunc) (object, - GTK_VALUE_INT (args[0]), - GTK_VALUE_INT (args[1]), GTK_VALUE_POINTER (args[2]), func_data); + GTK_VALUE_INT (args[0]), + GTK_VALUE_INT (args[1]), + GTK_VALUE_POINTER (args[2]), + func_data); +} + +typedef void (*GtkSignal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL) (GtkObject * object, + GtkObject *arg1, + gdouble arg2, + gdouble arg3, + gboolean arg4, + gpointer user_data); + +void +e_marshal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL (GtkObject * object, + GtkSignalFunc func, + gpointer func_data, GtkArg * args) +{ + GtkSignal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL rfunc; + rfunc = (GtkSignal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL) func; + (*rfunc) (object, + GTK_VALUE_OBJECT (args[0]), + GTK_VALUE_DOUBLE (args[1]), + GTK_VALUE_DOUBLE (args[2]), + GTK_VALUE_BOOL (args[3]), + func_data); +} + +typedef gdouble (*GtkSignal_DOUBLE__OBJECT_DOUBLE_DOUBLE) (GtkObject * object, + GtkObject *arg1, + gdouble arg2, + gdouble arg3, + gpointer user_data); + +void +e_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE (GtkObject * object, + GtkSignalFunc func, + gpointer func_data, GtkArg * args) +{ + GtkSignal_DOUBLE__OBJECT_DOUBLE_DOUBLE rfunc; + gdouble *return_val; + return_val = GTK_RETLOC_DOUBLE (args[3]); + rfunc = (GtkSignal_DOUBLE__OBJECT_DOUBLE_DOUBLE) func; + *return_val = (*rfunc) (object, + GTK_VALUE_OBJECT (args[0]), + GTK_VALUE_DOUBLE (args[1]), + GTK_VALUE_DOUBLE (args[2]), + func_data); } diff --git a/e-util/e-util.c-8611 b/e-util/e-util.c-8611 index 2571a0fbc3..a9c122eb74 100644 --- a/e-util/e-util.c-8611 +++ b/e-util/e-util.c-8611 @@ -160,22 +160,68 @@ e_write_file(const char *filename, const char *data, int flags) return 0; } -typedef gint (*GtkSignal_NONE__INT_INT_POINTER) (GtkObject * object, - gint arg1, - gint arg2, - gpointer arg3, - gpointer user_data); +typedef gint (*GtkSignal_INT__INT_INT_POINTER) (GtkObject * object, + gint arg1, + gint arg2, + gpointer arg3, + gpointer user_data); void e_marshal_INT__INT_INT_POINTER (GtkObject * object, GtkSignalFunc func, gpointer func_data, GtkArg * args) { - GtkSignal_NONE__INT_INT_POINTER rfunc; + GtkSignal_INT__INT_INT_POINTER rfunc; gint *return_val; return_val = GTK_RETLOC_INT (args[3]); - rfunc = (GtkSignal_NONE__INT_INT_POINTER) func; + rfunc = (GtkSignal_INT__INT_INT_POINTER) func; *return_val = (*rfunc) (object, - GTK_VALUE_INT (args[0]), - GTK_VALUE_INT (args[1]), GTK_VALUE_POINTER (args[2]), func_data); + GTK_VALUE_INT (args[0]), + GTK_VALUE_INT (args[1]), + GTK_VALUE_POINTER (args[2]), + func_data); +} + +typedef void (*GtkSignal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL) (GtkObject * object, + GtkObject *arg1, + gdouble arg2, + gdouble arg3, + gboolean arg4, + gpointer user_data); + +void +e_marshal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL (GtkObject * object, + GtkSignalFunc func, + gpointer func_data, GtkArg * args) +{ + GtkSignal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL rfunc; + rfunc = (GtkSignal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL) func; + (*rfunc) (object, + GTK_VALUE_OBJECT (args[0]), + GTK_VALUE_DOUBLE (args[1]), + GTK_VALUE_DOUBLE (args[2]), + GTK_VALUE_BOOL (args[3]), + func_data); +} + +typedef gdouble (*GtkSignal_DOUBLE__OBJECT_DOUBLE_DOUBLE) (GtkObject * object, + GtkObject *arg1, + gdouble arg2, + gdouble arg3, + gpointer user_data); + +void +e_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE (GtkObject * object, + GtkSignalFunc func, + gpointer func_data, GtkArg * args) +{ + GtkSignal_DOUBLE__OBJECT_DOUBLE_DOUBLE rfunc; + gdouble *return_val; + return_val = GTK_RETLOC_DOUBLE (args[3]); + rfunc = (GtkSignal_DOUBLE__OBJECT_DOUBLE_DOUBLE) func; + *return_val = (*rfunc) (object, + GTK_VALUE_OBJECT (args[0]), + GTK_VALUE_DOUBLE (args[1]), + GTK_VALUE_DOUBLE (args[2]), + func_data); } diff --git a/e-util/e-util.h b/e-util/e-util.h index 7f036877aa..541c3f9afe 100644 --- a/e-util/e-util.h +++ b/e-util/e-util.h @@ -43,8 +43,16 @@ char *e_read_file (const char *filename); gint e_write_file(const char *filename, const char *data, int flags); void e_marshal_INT__INT_INT_POINTER (GtkObject * object, - GtkSignalFunc func, - gpointer func_data, GtkArg * args); + GtkSignalFunc func, + gpointer func_data, GtkArg * args); + +void e_marshal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL (GtkObject * object, + GtkSignalFunc func, + gpointer func_data, GtkArg * args); + +void e_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE (GtkObject * object, + GtkSignalFunc func, + gpointer func_data, GtkArg * args); #endif /* _E_UTIL_H_ */ diff --git a/e-util/e-util.h-29002 b/e-util/e-util.h-29002 index 7f036877aa..541c3f9afe 100644 --- a/e-util/e-util.h-29002 +++ b/e-util/e-util.h-29002 @@ -43,8 +43,16 @@ char *e_read_file (const char *filename); gint e_write_file(const char *filename, const char *data, int flags); void e_marshal_INT__INT_INT_POINTER (GtkObject * object, - GtkSignalFunc func, - gpointer func_data, GtkArg * args); + GtkSignalFunc func, + gpointer func_data, GtkArg * args); + +void e_marshal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL (GtkObject * object, + GtkSignalFunc func, + gpointer func_data, GtkArg * args); + +void e_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE (GtkObject * object, + GtkSignalFunc func, + gpointer func_data, GtkArg * args); #endif /* _E_UTIL_H_ */ diff --git a/widgets/misc/e-printable.c b/widgets/misc/e-printable.c new file mode 100644 index 0000000000..27170fef84 --- /dev/null +++ b/widgets/misc/e-printable.c @@ -0,0 +1,172 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * e-printable.c: an object printer. + * + * Author: + * Christopher James Lahey <clahey@helixcode.com> + * + * (C) 2000 Helix Code, Inc. + */ +#include <config.h> +#include <gtk/gtksignal.h> +#include "e-util.h" +#include "e-printable.h" + +#define EP_CLASS(e) ((EPrintableClass *)((GtkObject *)e)->klass) + +#define PARENT_TYPE gtk_object_get_type () + + +static GtkObjectClass *e_printable_parent_class; + +enum { + PRINT_PAGE, + DATA_LEFT, + RESET, + HEIGHT, + LAST_SIGNAL +}; + +static guint e_printable_signals [LAST_SIGNAL] = { 0, }; + +static void +e_printable_class_init (GtkObjectClass *object_class) +{ + EPrintableClass *klass = E_PRINTABLE_CLASS(object_class); + e_printable_parent_class = gtk_type_class (PARENT_TYPE); + + e_printable_signals [PRINT_PAGE] = + gtk_signal_new ("print_page", + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (EPrintableClass, print_page), + e_marshal_NONE__OBJECT_DOUBLE_DOUBLE_BOOL, + GTK_TYPE_NONE, 4, GTK_TYPE_OBJECT, GTK_TYPE_DOUBLE, GTK_TYPE_DOUBLE, GTK_TYPE_BOOL); + + e_printable_signals [DATA_LEFT] = + gtk_signal_new ("data_left", + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (EPrintableClass, data_left), + gtk_marshal_BOOL__NONE, + GTK_TYPE_BOOL, 0, GTK_TYPE_NONE); + + e_printable_signals [RESET] = + gtk_signal_new ("reset", + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (EPrintableClass, reset), + gtk_marshal_NONE__NONE, + GTK_TYPE_NONE, 0, GTK_TYPE_NONE); + + e_printable_signals [HEIGHT] = + gtk_signal_new ("height", + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (EPrintableClass, height), + e_marshal_DOUBLE__OBJECT_DOUBLE_DOUBLE, + GTK_TYPE_DOUBLE, 3, GTK_TYPE_OBJECT, GTK_TYPE_DOUBLE, GTK_TYPE_DOUBLE); + + gtk_object_class_add_signals (object_class, e_printable_signals, LAST_SIGNAL); + + klass->print_page = NULL; + klass->data_left = NULL; + klass->reset = NULL; + klass->height = NULL; +} + + +guint +e_printable_get_type (void) +{ + static guint type = 0; + + if (!type) + { + GtkTypeInfo info = + { + "EPrintable", + sizeof (EPrintable), + sizeof (EPrintableClass), + (GtkClassInitFunc) e_printable_class_init, + NULL, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL, + }; + + type = gtk_type_unique (gtk_object_get_type (), &info); + } + + return type; +} + +EPrintable * +e_printable_new(void) +{ + return E_PRINTABLE(gtk_type_new(e_printable_get_type())); +} + +void +e_printable_print_page (EPrintable *e_printable, + GnomePrintContext *context, + gdouble width, + gdouble height, + gboolean quantized) +{ + g_return_if_fail (e_printable != NULL); + g_return_if_fail (E_IS_PRINTABLE (e_printable)); + + gtk_signal_emit (GTK_OBJECT (e_printable), + e_printable_signals [PRINT_PAGE], + context, + width, + height, + quantized); +} + +gboolean +e_printable_data_left (EPrintable *e_printable) +{ + gboolean ret_val; + + g_return_val_if_fail (e_printable != NULL, FALSE); + g_return_val_if_fail (E_IS_PRINTABLE (e_printable), FALSE); + + gtk_signal_emit (GTK_OBJECT (e_printable), + e_printable_signals [DATA_LEFT], + &ret_val); + + return ret_val; +} + +void +e_printable_reset (EPrintable *e_printable) +{ + g_return_if_fail (e_printable != NULL); + g_return_if_fail (E_IS_PRINTABLE (e_printable)); + + gtk_signal_emit (GTK_OBJECT (e_printable), + e_printable_signals [RESET]); +} + +gdouble +e_printable_height (EPrintable *e_printable, + GnomePrintContext *context, + gdouble width, + gdouble max_height) +{ + gdouble ret_val; + + g_return_val_if_fail (e_printable != NULL, -1); + g_return_val_if_fail (E_IS_PRINTABLE (e_printable), -1); + + gtk_signal_emit (GTK_OBJECT (e_printable), + e_printable_signals [HEIGHT], + context, + width, + max_height, + &ret_val); + + return ret_val; +} diff --git a/widgets/misc/e-printable.h b/widgets/misc/e-printable.h new file mode 100644 index 0000000000..2f8532e0ec --- /dev/null +++ b/widgets/misc/e-printable.h @@ -0,0 +1,58 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * e-printable.h: an object printer. + * + * Author: + * Christopher James Lahey <clahey@helixcode.com> + * + * (C) 2000 Helix Code, Inc. + */ +#ifndef _E_PRINTABLE_H_ +#define _E_PRINTABLE_H_ + +#include <gtk/gtkobject.h> +#include <libgnomeprint/gnome-print.h> + +#define E_PRINTABLE_TYPE (e_printable_get_type ()) +#define E_PRINTABLE(o) (GTK_CHECK_CAST ((o), E_PRINTABLE_TYPE, EPrintable)) +#define E_PRINTABLE_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_PRINTABLE_TYPE, EPrintableClass)) +#define E_IS_PRINTABLE(o) (GTK_CHECK_TYPE ((o), E_PRINTABLE_TYPE)) +#define E_IS_PRINTABLE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_PRINTABLE_TYPE)) + +typedef struct { + GtkObject base; +} EPrintable; + +typedef struct { + GtkObjectClass parent_class; + + /* + * Signals + */ + + void (*print_page) (EPrintable *etm, GnomePrintContext *context, gdouble width, gdouble height, gboolean quantized); + gboolean (*data_left) (EPrintable *etm); + void (*reset) (EPrintable *etm); + gdouble (*height) (EPrintable *etm, GnomePrintContext *context, gdouble width, gdouble max_height); +} EPrintableClass; + +GtkType e_printable_get_type (void); + +EPrintable *e_printable_new (void); + +/* + * Routines for emitting signals on the e_table + */ +void e_printable_print_page (EPrintable *e_printable, + GnomePrintContext *context, + gdouble width, + gdouble height, + gboolean quantized); +gboolean e_printable_data_left (EPrintable *e_printable); +void e_printable_reset (EPrintable *e_printable); +gdouble e_printable_height (EPrintable *e_printable, + GnomePrintContext *context, + gdouble width, + gdouble max_height); + +#endif /* _E_PRINTABLE_H_ */ |