/* Generated by GOB (v2.0.15)   (do not edit directly) */

#include <glib.h>
#include <glib-object.h>


/*
 * Copyright (C) 2008 Dov Grobgeld <dov.grobgeld@gmail.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */
#include <stdlib.h>
#include <gtk/gtk.h>
#include <gtk/gtkadjustment.h>

#ifndef __GTK_IMAGE_VIEWER_H__
#define __GTK_IMAGE_VIEWER_H__

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */


/*
 * Type checking and casting macros
 */
#define GTK_TYPE_IMAGE_VIEWER	(gtk_image_viewer_get_type())
#define GTK_IMAGE_VIEWER(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), gtk_image_viewer_get_type(), GtkImageViewer)
#define GTK_IMAGE_VIEWER_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), gtk_image_viewer_get_type(), GtkImageViewer const)
#define GTK_IMAGE_VIEWER_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), gtk_image_viewer_get_type(), GtkImageViewerClass)
#define GTK_IS_IMAGE_VIEWER(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), gtk_image_viewer_get_type ())

#define GTK_IMAGE_VIEWER_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), gtk_image_viewer_get_type(), GtkImageViewerClass)

/* Private structure type */
typedef struct _GtkImageViewerPrivate GtkImageViewerPrivate;

/*
 * Main object structure
 */
#ifndef __TYPEDEF_GTK_IMAGE_VIEWER__
#define __TYPEDEF_GTK_IMAGE_VIEWER__
typedef struct _GtkImageViewer GtkImageViewer;
#endif
struct _GtkImageViewer {
	GtkWidget __parent__;
	/*< private >*/
	GtkImageViewerPrivate *_priv;
};

/*
 * Class definition
 */
typedef struct _GtkImageViewerClass GtkImageViewerClass;
struct _GtkImageViewerClass {
	GtkWidgetClass __parent__;
	/*signal*/gboolean (* set_scroll_adjustments) (GtkImageViewer * self, GtkAdjustment * hadjustment, GtkAdjustment * vadjustment);
	/*signal*/void (* image_annotate) (GtkImageViewer * self, GdkPixbuf * pixbuf, gint shift_x, gint shift_y, gdouble scale_x, gdouble scale_y);
	/*signal*/void (* flip_changed) (GtkImageViewer * self, gboolean horizontal_flip, gboolean vertical_flip);
};


/*
 * Public methods
 */
GType	gtk_image_viewer_get_type	(void);
GtkWidget * 	gtk_image_viewer_new	(GdkPixbuf * pixbuf);
GtkWidget * 	gtk_image_viewer_new_from_file	(const gchar * filename);
void 	gtk_image_viewer_expose_area	(GtkImageViewer * self,
					int exp_x0,
					int exp_y0,
					int w,
					int h);
void 	gtk_image_viewer_set_freeze	(GtkImageViewer * self,
					gboolean is_frozen);
gint 	gtk_image_viewer_redraw	(GtkImageViewer * self,
					gboolean clear_cache);
gint 	gtk_image_viewer_zoom_around_fixed_point	(GtkImageViewer * self,
					double new_scale_x,
					double new_scale_y,
					double old_x,
					double old_y,
					double new_x,
					double new_y);
gint 	gtk_image_viewer_zoom_in	(GtkImageViewer * self,
					int x,
					int y,
					double factor);
gint 	gtk_image_viewer_zoom_out	(GtkImageViewer * self,
					int x,
					int y,
					double factor);
gint 	gtk_image_viewer_zoom_to_box	(GtkImageViewer * self,
					double world_min_x,
					double world_min_y,
					double world_max_x,
					double world_max_y,
					double pixel_margin,
					gboolean preserve_aspect);
void 	gtk_image_viewer_set_hadjustment	(GtkImageViewer * self,
					GtkAdjustment * adjustment);
void 	gtk_image_viewer_set_vadjustment	(GtkImageViewer * self,
					GtkAdjustment * adjustment);
void 	gtk_image_viewer_set_image	(GtkImageViewer * self,
					GdkPixbuf * image);
const GdkPixbuf * 	gtk_image_viewer_get_image	(GtkImageViewer * self);
gboolean 	gtk_image_viewer_set_scroll_adjustments	(GtkImageViewer * self,
					GtkAdjustment * hadjustment,
					GtkAdjustment * vadjustment);
void 	gtk_image_viewer_image_annotate	(GtkImageViewer * self,
					GdkPixbuf * pixbuf,
					gint shift_x,
					gint shift_y,
					gdouble scale_x,
					gdouble scale_y);
void 	gtk_image_viewer_flip_changed	(GtkImageViewer * self,
					gboolean horizontal_flip,
					gboolean vertical_flip);
guint 	gtk_image_viewer_get_image_width	(GtkImageViewer * self);
guint 	gtk_image_viewer_get_image_height	(GtkImageViewer * self);
void 	gtk_image_viewer_canv_coord_to_img_coord	(GtkImageViewer * self,
					double cx,
					double cy,
					double * imgx,
					double * imgy);
void 	gtk_image_viewer_img_coord_to_canv_coord	(GtkImageViewer * self,
					double imgx,
					double imgy,
					double * canvx,
					double * canvy);
void 	gtk_image_viewer_set_zoom_range	(GtkImageViewer * self,
					double min_zoom,
					double max_zoom);
void 	gtk_image_viewer_get_scale_and_shift	(GtkImageViewer * self,
					gdouble * scale_x,
					gdouble * scale_y,
					gint * shift_x,
					gint * shift_y);
void 	gtk_image_viewer_set_scale_and_shift	(GtkImageViewer * self,
					gdouble scale_x,
					gdouble scale_y,
					gint shift_x,
					gint shift_y);
void 	gtk_image_viewer_set_transfer_map	(GtkImageViewer * self,
					guint8 * rmap,
					guint8 * gmap,
					guint8 * bmap);
void 	gtk_image_viewer_set_fill_on_resize	(GtkImageViewer * self,
					gboolean whether);
void 	gtk_image_viewer_one_shot_block_fill_on_resize	(GtkImageViewer * self);
gboolean 	gtk_image_viewer_get_fill_on_resize	(GtkImageViewer * self);
void 	gtk_image_viewer_set_scroll_region	(GtkImageViewer * self,
					double x0,
					double y0,
					double x1,
					double y1);
void 	gtk_image_viewer_set_flip	(GtkImageViewer * self,
					gboolean do_flip_horizontal,
					gboolean do_flip_vertical);
void 	gtk_image_viewer_zoom_reset	(GtkImageViewer * self);
void 	gtk_image_viewer_zoom_fit	(GtkImageViewer * self);

/*
 * Signal connection wrapper macros
 */
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
#define gtk_image_viewer_connect__set_scroll_adjustments(object,func,data)	g_signal_connect(GTK_IMAGE_VIEWER(__extension__ ({GtkImageViewer *___object = (object); ___object; })),"set_scroll_adjustments",(GCallback) __extension__ ({gboolean (* ___set_scroll_adjustments) (GtkImageViewer * ___fake___self, GtkAdjustment * ___fake___hadjustment, GtkAdjustment * ___fake___vadjustment, gpointer ___data ) = (func); ___set_scroll_adjustments; }), (data))
#define gtk_image_viewer_connect_after__set_scroll_adjustments(object,func,data)	g_signal_connect_after(GTK_IMAGE_VIEWER(__extension__ ({GtkImageViewer *___object = (object); ___object; })),"set_scroll_adjustments",(GCallback) __extension__ ({gboolean (* ___set_scroll_adjustments) (GtkImageViewer * ___fake___self, GtkAdjustment * ___fake___hadjustment, GtkAdjustment * ___fake___vadjustment, gpointer ___data ) = (func); ___set_scroll_adjustments; }), (data))
#define gtk_image_viewer_connect_data__set_scroll_adjustments(object,func,data,destroy_data,flags)	g_signal_connect_data(GTK_IMAGE_VIEWER(__extension__ ({GtkImageViewer *___object = (object); ___object; })),"set_scroll_adjustments",(GCallback) __extension__ ({gboolean (* ___set_scroll_adjustments) (GtkImageViewer * ___fake___self, GtkAdjustment * ___fake___hadjustment, GtkAdjustment * ___fake___vadjustment, gpointer ___data ) = (func); ___set_scroll_adjustments; }), (data), (destroy_data), (GConnectFlags)(flags))
#define gtk_image_viewer_connect__image_annotate(object,func,data)	g_signal_connect(GTK_IMAGE_VIEWER(__extension__ ({GtkImageViewer *___object = (object); ___object; })),"image_annotate",(GCallback) __extension__ ({void (* ___image_annotate) (GtkImageViewer * ___fake___self, GdkPixbuf * ___fake___pixbuf, gint ___fake___shift_x, gint ___fake___shift_y, gdouble ___fake___scale_x, gdouble ___fake___scale_y, gpointer ___data ) = (func); ___image_annotate; }), (data))
#define gtk_image_viewer_connect_after__image_annotate(object,func,data)	g_signal_connect_after(GTK_IMAGE_VIEWER(__extension__ ({GtkImageViewer *___object = (object); ___object; })),"image_annotate",(GCallback) __extension__ ({void (* ___image_annotate) (GtkImageViewer * ___fake___self, GdkPixbuf * ___fake___pixbuf, gint ___fake___shift_x, gint ___fake___shift_y, gdouble ___fake___scale_x, gdouble ___fake___scale_y, gpointer ___data ) = (func); ___image_annotate; }), (data))
#define gtk_image_viewer_connect_data__image_annotate(object,func,data,destroy_data,flags)	g_signal_connect_data(GTK_IMAGE_VIEWER(__extension__ ({GtkImageViewer *___object = (object); ___object; })),"image_annotate",(GCallback) __extension__ ({void (* ___image_annotate) (GtkImageViewer * ___fake___self, GdkPixbuf * ___fake___pixbuf, gint ___fake___shift_x, gint ___fake___shift_y, gdouble ___fake___scale_x, gdouble ___fake___scale_y, gpointer ___data ) = (func); ___image_annotate; }), (data), (destroy_data), (GConnectFlags)(flags))
#define gtk_image_viewer_connect__flip_changed(object,func,data)	g_signal_connect(GTK_IMAGE_VIEWER(__extension__ ({GtkImageViewer *___object = (object); ___object; })),"flip_changed",(GCallback) __extension__ ({void (* ___flip_changed) (GtkImageViewer * ___fake___self, gboolean ___fake___horizontal_flip, gboolean ___fake___vertical_flip, gpointer ___data ) = (func); ___flip_changed; }), (data))
#define gtk_image_viewer_connect_after__flip_changed(object,func,data)	g_signal_connect_after(GTK_IMAGE_VIEWER(__extension__ ({GtkImageViewer *___object = (object); ___object; })),"flip_changed",(GCallback) __extension__ ({void (* ___flip_changed) (GtkImageViewer * ___fake___self, gboolean ___fake___horizontal_flip, gboolean ___fake___vertical_flip, gpointer ___data ) = (func); ___flip_changed; }), (data))
#define gtk_image_viewer_connect_data__flip_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(GTK_IMAGE_VIEWER(__extension__ ({GtkImageViewer *___object = (object); ___object; })),"flip_changed",(GCallback) __extension__ ({void (* ___flip_changed) (GtkImageViewer * ___fake___self, gboolean ___fake___horizontal_flip, gboolean ___fake___vertical_flip, gpointer ___data ) = (func); ___flip_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
#else /* __GNUC__ && !__STRICT_ANSI__ */
#define gtk_image_viewer_connect__set_scroll_adjustments(object,func,data)	g_signal_connect(GTK_IMAGE_VIEWER(object),"set_scroll_adjustments",(GCallback)(func),(data))
#define gtk_image_viewer_connect_after__set_scroll_adjustments(object,func,data)	g_signal_connect_after(GTK_IMAGE_VIEWER(object),"set_scroll_adjustments",(GCallback)(func),(data))
#define gtk_image_viewer_connect_data__set_scroll_adjustments(object,func,data,destroy_data,flags)	g_signal_connect_data(GTK_IMAGE_VIEWER(object),"set_scroll_adjustments",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
#define gtk_image_viewer_connect__image_annotate(object,func,data)	g_signal_connect(GTK_IMAGE_VIEWER(object),"image_annotate",(GCallback)(func),(data))
#define gtk_image_viewer_connect_after__image_annotate(object,func,data)	g_signal_connect_after(GTK_IMAGE_VIEWER(object),"image_annotate",(GCallback)(func),(data))
#define gtk_image_viewer_connect_data__image_annotate(object,func,data,destroy_data,flags)	g_signal_connect_data(GTK_IMAGE_VIEWER(object),"image_annotate",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
#define gtk_image_viewer_connect__flip_changed(object,func,data)	g_signal_connect(GTK_IMAGE_VIEWER(object),"flip_changed",(GCallback)(func),(data))
#define gtk_image_viewer_connect_after__flip_changed(object,func,data)	g_signal_connect_after(GTK_IMAGE_VIEWER(object),"flip_changed",(GCallback)(func),(data))
#define gtk_image_viewer_connect_data__flip_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(GTK_IMAGE_VIEWER(object),"flip_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
#endif /* __GNUC__ && !__STRICT_ANSI__ */


#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif
