Annotation of tme/host/gtk/gtk-display.h, revision 1.1.1.4

1.1.1.4 ! root        1: /* $Id: gtk-display.h,v 1.10 2009/08/28 01:29:47 fredette Exp $ */
1.1       root        2: 
                      3: /* host/gtk/gtk-display.h - header file for GTK display support: */
                      4: 
                      5: /*
                      6:  * Copyright (c) 2003 Matt Fredette
                      7:  * All rights reserved.
                      8:  *
                      9:  * Redistribution and use in source and binary forms, with or without
                     10:  * modification, are permitted provided that the following conditions
                     11:  * are met:
                     12:  * 1. Redistributions of source code must retain the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer.
                     14:  * 2. Redistributions in binary form must reproduce the above copyright
                     15:  *    notice, this list of conditions and the following disclaimer in the
                     16:  *    documentation and/or other materials provided with the distribution.
                     17:  * 3. All advertising materials mentioning features or use of this software
                     18:  *    must display the following acknowledgement:
                     19:  *      This product includes software developed by Matt Fredette.
                     20:  * 4. The name of the author may not be used to endorse or promote products
                     21:  *    derived from this software without specific prior written permission.
                     22:  *
                     23:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     24:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
                     25:  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
                     26:  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
                     27:  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
                     28:  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
                     29:  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     30:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
                     31:  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
                     32:  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     33:  * POSSIBILITY OF SUCH DAMAGE.
                     34:  */
                     35: 
                     36: #ifndef _HOST_GTK_GTK_DISPLAY_H
                     37: #define _HOST_GTK_GTK_DISPLAY_H
                     38: 
                     39: #include <tme/common.h>
1.1.1.4 ! root       40: _TME_RCSID("$Id: gtk-display.h,v 1.10 2009/08/28 01:29:47 fredette Exp $");
1.1       root       41: 
                     42: /* includes: */
                     43: #include <tme/generic/fb.h>
                     44: #include <tme/generic/keyboard.h>
                     45: #include <tme/generic/mouse.h>
                     46: #include <tme/threads.h>
                     47: #include <tme/hash.h>
1.1.1.2   root       48: #ifndef G_ENABLE_DEBUG
                     49: #define G_ENABLE_DEBUG (0)
                     50: #endif /* !G_ENABLE_DEBUG */
1.1       root       51: #include <gtk/gtk.h>
                     52: 
                     53: /* macros: */
                     54: 
                     55: /* the callout flags: */
                     56: #define TME_GTK_DISPLAY_CALLOUT_CHECK          (0)
                     57: #define TME_GTK_DISPLAY_CALLOUT_RUNNING                TME_BIT(0)
                     58: #define TME_GTK_DISPLAY_CALLOUTS_MASK          (-2)
                     59: #define  TME_GTK_DISPLAY_CALLOUT_KEYBOARD_CTRL TME_BIT(1)
                     60: #define  TME_GTK_DISPLAY_CALLOUT_MOUSE_CTRL    TME_BIT(2)
                     61: 
                     62: /* types: */
                     63: 
                     64: struct tme_gtk_display;
                     65: 
                     66: /* a screen: */
                     67: struct tme_gtk_screen {
                     68: 
                     69:   /* the next screen: */
                     70:   struct tme_gtk_screen *tme_gtk_screen_next;
                     71: 
                     72:   /* a backpointer to the display: */
                     73:   struct tme_gtk_display *tme_gtk_screen_display;
                     74: 
                     75:   /* the framebuffer connection.  unlike many other elements, this is
                     76:      *our* side of the framebuffer connection, not the peer's side: */
                     77:   struct tme_fb_connection *tme_gtk_screen_fb;
                     78: 
                     79:   /* the current scaling.  if this is < 0, the user has not forced a
                     80:      given scaling yet: */
                     81:   int tme_gtk_screen_fb_scale;
                     82: 
1.1.1.3   root       83:   /* any colorset signature: */
                     84:   tme_uint32_t tme_gtk_screen_colorset;
                     85: 
1.1       root       86:   /* the top-level window: */
                     87:   GtkWidget *tme_gtk_screen_window;
                     88:   
                     89:   /* the outer vertical packing box: */
                     90:   GtkWidget *tme_gtk_screen_vbox0;
                     91: 
                     92:   /* various menu item widgets: */
                     93:   GtkWidget *tme_gtk_screen_scale_default;
                     94:   GtkWidget *tme_gtk_screen_scale_half;
                     95: 
                     96:   /* the GtkEventBox, GdkImage and GtkImage for the framebuffer: */
                     97:   GtkWidget *tme_gtk_screen_event_box;
                     98:   GdkImage *tme_gtk_screen_gdkimage;
                     99:   GtkWidget *tme_gtk_screen_gtkimage;
                    100: 
                    101:   /* the translation function: */
                    102:   int (*tme_gtk_screen_fb_xlat) _TME_P((struct tme_fb_connection *, 
                    103:                                        struct tme_fb_connection *));
                    104: 
                    105:   /* the mouse on label: */
                    106:   GtkWidget *tme_gtk_screen_mouse_label;
                    107: 
                    108:   /* the status bar, and the context ID: */
                    109:   GtkWidget *tme_gtk_screen_mouse_statusbar;
                    110:   guint tme_gtk_screen_mouse_statusbar_cid;
                    111: 
                    112:   /* if GDK_VoidSymbol, mouse mode is off.  otherwise,
                    113:      mouse mode is on, and this is the keyval that will
                    114:      turn mouse mode off: */
                    115:   guint tme_gtk_screen_mouse_keyval;
                    116: 
                    117:   /* when mouse mode is on, this is the previous events mask
                    118:      for the framebuffer event box: */
                    119:   GdkEventMask tme_gtk_screen_mouse_events_old;
                    120: 
                    121:   /* when mouse mode is on, this is the warp center: */
1.1.1.3   root      122:   gint tme_gtk_screen_mouse_warp_x;
                    123:   gint tme_gtk_screen_mouse_warp_y;
1.1       root      124: 
                    125:   /* when mouse mode is on, the last tme buttons state: */
                    126:   unsigned int tme_gtk_screen_mouse_buttons_last;
1.1.1.4 ! root      127: 
        !           128:   /* if nonzero, the screen needs a full redraw: */
        !           129:   int tme_gtk_screen_full_redraw;
1.1       root      130: };
                    131: 
                    132: /* a GTK bad keysym: */
                    133: struct tme_gtk_keysym_bad {
                    134: 
                    135:   /* these are kept on a singly linked list: */
                    136:   struct tme_gtk_keysym_bad *tme_gtk_keysym_bad_next;
                    137: 
                    138:   /* the bad keysym string: */
                    139:   char *tme_gtk_keysym_bad_string;
                    140: 
                    141:   /* the flags and context used in the lookup: */
                    142:   unsigned int tme_keysym_bad_flags;
                    143:   unsigned int tme_gtk_keysym_bad_context_length;
                    144:   tme_uint8_t *tme_gtk_keysym_bad_context;
                    145: };
                    146: 
                    147: /* a display: */
                    148: struct tme_gtk_display {
                    149: 
                    150:   /* backpointer to our element: */
                    151:   struct tme_element *tme_gtk_display_element;
                    152: 
                    153:   /* our mutex: */
                    154:   tme_mutex_t tme_gtk_display_mutex;
                    155: 
                    156:   /* our keyboard connection: */
                    157:   struct tme_keyboard_connection *tme_gtk_display_keyboard_connection;
                    158: 
                    159:   /* our keyboard buffer: */
                    160:   struct tme_keyboard_buffer *tme_gtk_display_keyboard_buffer;
                    161: 
                    162:   /* our keysyms hash: */
                    163:   tme_hash_t tme_gtk_display_keyboard_keysyms;
                    164: 
                    165:   /* the bad keysym records: */
                    166:   struct tme_gtk_keysym_bad *tme_gtk_display_keyboard_keysyms_bad;
                    167: 
                    168:   /* our keysym to keycode hash: */
                    169:   tme_hash_t tme_gtk_display_keyboard_keysym_to_keycode;
                    170: 
1.1.1.3   root      171:   /* the next keysym to allocate for an unknown keysym string: */
                    172:   guint tme_gtk_display_keyboard_keysym_alloc_next;
                    173: 
1.1       root      174:   /* our mouse connection: */
                    175:   struct tme_mouse_connection *tme_gtk_display_mouse_connection;
                    176: 
                    177:   /* our mouse buffer: */
                    178:   struct tme_mouse_buffer *tme_gtk_display_mouse_buffer;
                    179: 
                    180:   /* our mouse cursor: */
                    181:   GdkCursor *tme_gtk_display_mouse_cursor;
                    182: 
                    183:   /* our screens: */
                    184:   struct tme_gtk_screen *tme_gtk_display_screens;
                    185: 
                    186:   /* the callout flags: */
                    187:   unsigned int tme_gtk_display_callout_flags;
                    188: 
                    189:   /* the tooltips group: */
                    190:   GtkTooltips *tme_gtk_display_tooltips;
                    191: };
                    192: 
1.1.1.3   root      193: /* a menu item: */
                    194: struct tme_gtk_display_menu_item {
                    195: 
                    196:   /* which menu item this is: */
                    197:   unsigned int tme_gtk_display_menu_item_which;
                    198: 
                    199:   /* where to save the menu item widget: */
                    200:   GtkWidget **tme_gtk_display_menu_item_widget;
                    201: 
                    202:   /* the string for the menu item label: */
                    203:   const char *tme_gtk_display_menu_item_string;
                    204: };
                    205: 
                    206: /* this generates menu items: */
                    207: typedef GtkSignalFunc (*tme_gtk_display_menu_items_t) _TME_P((void *, struct tme_gtk_display_menu_item *));
                    208: 
1.1       root      209: /* prototypes: */
                    210: struct tme_gtk_screen *_tme_gtk_screen_new _TME_P((struct tme_gtk_display *));
                    211: int _tme_gtk_screen_connections_new _TME_P((struct tme_gtk_display *, 
                    212:                                            struct tme_connection **));
                    213: void _tme_gtk_keyboard_new _TME_P((struct tme_gtk_display *));
                    214: void _tme_gtk_keyboard_attach _TME_P((struct tme_gtk_screen *));
                    215: int _tme_gtk_keyboard_connections_new _TME_P((struct tme_gtk_display *,
                    216:                                              struct tme_connection **));
                    217: void _tme_gtk_mouse_new _TME_P((struct tme_gtk_display *));
                    218: void _tme_gtk_mouse_mode_off _TME_P((struct tme_gtk_screen *, guint32));
                    219: void _tme_gtk_mouse_attach _TME_P((struct tme_gtk_screen *));
                    220: int _tme_gtk_mouse_connections_new _TME_P((struct tme_gtk_display *,
                    221:                                           struct tme_connection **));
                    222: void _tme_gtk_screen_th_update _TME_P((struct tme_gtk_display *));
                    223: void _tme_gtk_display_callout _TME_P((struct tme_gtk_display *,
                    224:                                      int));
                    225: gint _tme_gtk_display_enter_focus _TME_P((GtkWidget *, GdkEvent *, gpointer));
1.1.1.3   root      226: GtkWidget *_tme_gtk_display_menu_radio _TME_P((void *, tme_gtk_display_menu_items_t));
1.1       root      227: 
                    228: #endif /* _HOST_GTK_GTK_DISPLAY_H */
                    229: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.