#ifndef _LIBRFB_DECODER_H_ #define _LIBRFB_DECODER_H_ #include #include G_BEGIN_DECLS typedef struct _RfbDecoder RfbDecoder; struct _RfbDecoder { int (*send_data) (guint8 *buffer, int length, gpointer user_data); gpointer buffer_handler_data; RfbBytestream *bytestream; gpointer decoder_private; void (*paint_rect) (RfbDecoder *decoder, int x, int y, int w, int h, guint8 *data); void (*copy_rect) (RfbDecoder *decoder, int x, int y, int w, int h, int src_x, int src_y); /* settable properties */ gboolean shared_flag; /* readable properties */ gboolean inited; int protocol_major; int protocol_minor; unsigned int security_type; unsigned int width; unsigned int height; unsigned int bpp; unsigned int depth; gboolean big_endian; gboolean true_colour; unsigned int red_max; unsigned int green_max; unsigned int blue_max; unsigned int red_shift; unsigned int green_shift; unsigned int blue_shift; char *name; /* state information */ gboolean (*state) (RfbDecoder *decoder); int n_rects; }; #if 0 typedef struct _RfbRect { RfbConnection *connection; unsigned int x_pos; unsigned int y_pos; unsigned int width; unsigned int height; unsigned int encoding_type; char *data; } RfbRect; #endif RfbDecoder *rfb_decoder_new (void); void rfb_decoder_use_file_descriptor (RfbDecoder * decoder, int fd); void rfb_decoder_connect_tcp (RfbDecoder *decoder, char * addr, unsigned int port); void rfb_decoder_set_peer (RfbDecoder * decoder); gboolean rfb_decoder_iterate (RfbDecoder * decoder); int rfb_decoder_send (RfbDecoder * decoder, guint8 *data, int len); void rfb_decoder_send_update_request (RfbDecoder * decoder, gboolean incremental, int x, int y, int width, int height); void rfb_decoder_send_key_event (RfbDecoder * decoder, unsigned int key, gboolean down_flag); void rfb_decoder_send_pointer_event (RfbDecoder * decoder, int button_mask, int x, int y); G_END_DECLS #endif