symbian-qemu-0.9.1-12/qemu-symbian-svp/gui_host.h
changeset 1 2fb8b9db1c86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/qemu-symbian-svp/gui_host.h	Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,155 @@
+/*
+ * GUI Host side interface
+ *
+ * Copyright (c) 2009 CodeSourcery
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef GUI_HOST_H
+#define GUI_HOST_H
+
+#define SKINNED_VT_PRIORITY_ORDER           10
+#define SKINLESS_GRAPHIC_VT_PRIORITY_ORDER  20
+#define SKINLESS_TEXT_VT_PRIORITY_ORDER     30
+
+typedef unsigned int DisplayID;
+typedef unsigned int VtID;
+typedef unsigned int ImageID;
+typedef unsigned int AreaID;
+
+
+/* DFG FIXME: move the DisplayState definition to gui.c (as internal implementation) */
+
+struct DisplayState {
+    /* FIXME: Move away this from here (now in screen_data_t) */
+    uint8_t *data;
+    int linesize;
+    int depth;
+    int bgr; /* BGR color order instead of RGB. Only valid for depth == 32 */
+    /*******************/
+    int x0;
+    int y0;
+    int width;
+    int height;
+    VtID vtid;
+    DisplayID dispid;
+    void *opaque;
+
+    void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h);
+    void (*dpy_copy)(struct DisplayState *s, int src_x, int src_y,
+                     int dst_x, int dst_y, int w, int h);
+    void (*dpy_fill)(struct DisplayState *s, int x, int y,
+                     int w, int h, uint32_t c);
+    void (*dpy_text_cursor)(struct DisplayState *s, int x, int y);
+    void (*mouse_set)(int x, int y, int on);
+    void (*cursor_define)(int width, int height, int bpp, int hot_x, int hot_y,
+                          uint8_t *image, uint8_t *mask);
+};
+
+/****************************************************/
+
+/* in ms */
+#define GUI_REFRESH_INTERVAL 30
+
+/************ HOST SIDE INTERFACE ************/
+
+void kbd_mouse_event(int dx, int dy, int dz, int buttons_state);
+int kbd_mouse_is_absolute(void);
+void do_info_mice(void);
+void do_mouse_set(int index);
+
+/* to be used by sdl.c or vnc.c */
+
+typedef enum
+{
+    GUI_CURSOR_NORMAL,
+    GUI_CURSOR_GRABBING,
+    GUI_CURSOR_GUEST_SPRITE,
+    GUI_CURSOR_HIDDEN, /* What is this for? */
+} gui_cursor_type_t;
+
+typedef struct {
+    /* this was in DisplayState */
+    uint8_t *data;
+    int linesize;
+    int depth;
+    int bgr; /* BGR color order instead of RGB. Only valid for depth == 32 */
+    int height;
+    int width;
+} screen_data_t;
+
+typedef struct
+{
+    void (*turn_cursor_on)(gui_cursor_type_t);
+    void (*turn_cursor_off)(void);
+    void (*grab_input_on)(void);
+    void (*grab_input_off)(void);
+    void (*mouse_warp)(int x, int y);
+    void (*set_caption)(const char* title, const char* icon);
+    int  (*is_app_active)(void);
+    void (*set_screen_size)(int width, int height, int on);
+    void (*get_screen_data)(screen_data_t *new_screen_data);
+    void (*init_ds)(struct DisplayState *ds);
+    void (*process_events)(void);
+    void (*set_kbd_terminal_mode)(int on);
+}gui_host_callbacks_t;
+
+void gui_init(gui_host_callbacks_t* callbacks);
+int gui_load(const char *xml_file);
+void gui_unload(void);
+DisplayState *gui_new_vt(int order_priority);
+int gui_needs_timer(void);
+void gui_set_timer(struct QEMUTimer *timer);
+void gui_refresh_caption(void);
+void gui_destroy(void);
+void gui_set_paint_callbacks(DisplayState *ds,
+                             vga_hw_update_ptr update,
+                             vga_hw_invalidate_ptr invalidate,
+                             vga_hw_screen_dump_ptr screen_dump,
+                             void *opaque);
+void gui_show_image(VtID vtid, ImageID id);
+void gui_hide_image(VtID vtid, ImageID id);
+
+/* Queries */
+int gui_allows_fullscreen(void); /* returns 0 or 1 */
+int gui_is_display_active(DisplayState *ds);
+
+/* Events */
+void gui_notify_toggle_fullscreen(void);
+void gui_notify_toggle_grabmode(void);
+void gui_notify_mouse_motion(int dx, int dy, int dz, int x, int y, int state);
+void gui_notify_mouse_button(int dz, int x, int y, int state);
+void gui_notify_mouse_warp(int x, int y, int on);
+void gui_notify_dev_key(int key);
+void gui_notify_term_key(int key);
+void gui_notify_console_select(int console); /* console is not the VtID, but the ordinal # */
+void gui_notify_activate_display(DisplayState *ds);
+void gui_notify_new_guest_cursor(void);
+void gui_notify_input_focus_lost(void);
+void gui_notify_app_focus(int gain);
+void gui_notify_idle(int idle);
+void gui_notify_update_tick(int64_t ticks);
+void gui_notify_repaint_screen(void);
+void gui_notify_screen_dump(const char *filename);
+
+#define DEF_BACKGROUND_IMAGE (ImageID)0  /* Default Background is always 0 */
+
+#endif
+