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

1.1       root        1: /* $Id: gtk-display.h,v 1.4 2003/10/16 02:48:23 fredette Exp $ */
                      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>
                     40: _TME_RCSID("$Id: gtk-display.h,v 1.4 2003/10/16 02:48:23 fredette Exp $");
                     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>
                     48: #include <gtk/gtk.h>
                     49: 
                     50: /* macros: */
                     51: 
                     52: /* the callout flags: */
                     53: #define TME_GTK_DISPLAY_CALLOUT_CHECK          (0)
                     54: #define TME_GTK_DISPLAY_CALLOUT_RUNNING                TME_BIT(0)
                     55: #define TME_GTK_DISPLAY_CALLOUTS_MASK          (-2)
                     56: #define  TME_GTK_DISPLAY_CALLOUT_KEYBOARD_CTRL TME_BIT(1)
                     57: #define  TME_GTK_DISPLAY_CALLOUT_MOUSE_CTRL    TME_BIT(2)
                     58: 
                     59: /* types: */
                     60: 
                     61: struct tme_gtk_display;
                     62: 
                     63: /* a screen: */
                     64: struct tme_gtk_screen {
                     65: 
                     66:   /* the next screen: */
                     67:   struct tme_gtk_screen *tme_gtk_screen_next;
                     68: 
                     69:   /* a backpointer to the display: */
                     70:   struct tme_gtk_display *tme_gtk_screen_display;
                     71: 
                     72:   /* the framebuffer connection.  unlike many other elements, this is
                     73:      *our* side of the framebuffer connection, not the peer's side: */
                     74:   struct tme_fb_connection *tme_gtk_screen_fb;
                     75: 
                     76:   /* the current scaling.  if this is < 0, the user has not forced a
                     77:      given scaling yet: */
                     78:   int tme_gtk_screen_fb_scale;
                     79: 
                     80:   /* the top-level window: */
                     81:   GtkWidget *tme_gtk_screen_window;
                     82:   
                     83:   /* the outer vertical packing box: */
                     84:   GtkWidget *tme_gtk_screen_vbox0;
                     85: 
                     86:   /* various menu item widgets: */
                     87:   GtkWidget *tme_gtk_screen_scale_default;
                     88:   GtkWidget *tme_gtk_screen_scale_half;
                     89: 
                     90:   /* when connected to a monochrome framebuffer, this is all-bits-one
                     91:      iff a zero pixel should be drawn as white: */
                     92:   gushort tme_gtk_screen_mono_invert_mask;
                     93: 
                     94:   /* the GtkEventBox, GdkImage and GtkImage for the framebuffer: */
                     95:   GtkWidget *tme_gtk_screen_event_box;
                     96:   GdkImage *tme_gtk_screen_gdkimage;
                     97:   GtkWidget *tme_gtk_screen_gtkimage;
                     98: 
                     99:   /* the translation function: */
                    100:   int (*tme_gtk_screen_fb_xlat) _TME_P((struct tme_fb_connection *, 
                    101:                                        struct tme_fb_connection *));
                    102: 
                    103:   /* the mouse on label: */
                    104:   GtkWidget *tme_gtk_screen_mouse_label;
                    105: 
                    106:   /* the status bar, and the context ID: */
                    107:   GtkWidget *tme_gtk_screen_mouse_statusbar;
                    108:   guint tme_gtk_screen_mouse_statusbar_cid;
                    109: 
                    110:   /* if GDK_VoidSymbol, mouse mode is off.  otherwise,
                    111:      mouse mode is on, and this is the keyval that will
                    112:      turn mouse mode off: */
                    113:   guint tme_gtk_screen_mouse_keyval;
                    114: 
                    115:   /* when mouse mode is on, this is the previous events mask
                    116:      for the framebuffer event box: */
                    117:   GdkEventMask tme_gtk_screen_mouse_events_old;
                    118: 
                    119:   /* when mouse mode is on, this is the warp center: */
                    120:   guint tme_gtk_screen_mouse_warp_x;
                    121:   guint tme_gtk_screen_mouse_warp_y;
                    122: 
                    123:   /* when mouse mode is on, the last tme buttons state: */
                    124:   unsigned int tme_gtk_screen_mouse_buttons_last;
                    125: };
                    126: 
                    127: /* a GTK bad keysym: */
                    128: struct tme_gtk_keysym_bad {
                    129: 
                    130:   /* these are kept on a singly linked list: */
                    131:   struct tme_gtk_keysym_bad *tme_gtk_keysym_bad_next;
                    132: 
                    133:   /* the bad keysym string: */
                    134:   char *tme_gtk_keysym_bad_string;
                    135: 
                    136:   /* the flags and context used in the lookup: */
                    137:   unsigned int tme_keysym_bad_flags;
                    138:   unsigned int tme_gtk_keysym_bad_context_length;
                    139:   tme_uint8_t *tme_gtk_keysym_bad_context;
                    140: };
                    141: 
                    142: /* a display: */
                    143: struct tme_gtk_display {
                    144: 
                    145:   /* backpointer to our element: */
                    146:   struct tme_element *tme_gtk_display_element;
                    147: 
                    148:   /* our mutex: */
                    149:   tme_mutex_t tme_gtk_display_mutex;
                    150: 
                    151:   /* our keyboard connection: */
                    152:   struct tme_keyboard_connection *tme_gtk_display_keyboard_connection;
                    153: 
                    154:   /* our keyboard buffer: */
                    155:   struct tme_keyboard_buffer *tme_gtk_display_keyboard_buffer;
                    156: 
                    157:   /* our keysyms hash: */
                    158:   tme_hash_t tme_gtk_display_keyboard_keysyms;
                    159: 
                    160:   /* the bad keysym records: */
                    161:   struct tme_gtk_keysym_bad *tme_gtk_display_keyboard_keysyms_bad;
                    162: 
                    163:   /* our keysym to keycode hash: */
                    164:   tme_hash_t tme_gtk_display_keyboard_keysym_to_keycode;
                    165: 
                    166:   /* our mouse connection: */
                    167:   struct tme_mouse_connection *tme_gtk_display_mouse_connection;
                    168: 
                    169:   /* our mouse buffer: */
                    170:   struct tme_mouse_buffer *tme_gtk_display_mouse_buffer;
                    171: 
                    172:   /* our mouse cursor: */
                    173:   GdkCursor *tme_gtk_display_mouse_cursor;
                    174: 
                    175:   /* our screens: */
                    176:   struct tme_gtk_screen *tme_gtk_display_screens;
                    177: 
                    178:   /* the callout flags: */
                    179:   unsigned int tme_gtk_display_callout_flags;
                    180: 
                    181:   /* the tooltips group: */
                    182:   GtkTooltips *tme_gtk_display_tooltips;
                    183: };
                    184: 
                    185: /* prototypes: */
                    186: struct tme_gtk_screen *_tme_gtk_screen_new _TME_P((struct tme_gtk_display *));
                    187: int _tme_gtk_screen_connections_new _TME_P((struct tme_gtk_display *, 
                    188:                                            struct tme_connection **));
                    189: void _tme_gtk_keyboard_new _TME_P((struct tme_gtk_display *));
                    190: void _tme_gtk_keyboard_attach _TME_P((struct tme_gtk_screen *));
                    191: int _tme_gtk_keyboard_connections_new _TME_P((struct tme_gtk_display *,
                    192:                                              struct tme_connection **));
                    193: void _tme_gtk_mouse_new _TME_P((struct tme_gtk_display *));
                    194: void _tme_gtk_mouse_mode_off _TME_P((struct tme_gtk_screen *, guint32));
                    195: void _tme_gtk_mouse_attach _TME_P((struct tme_gtk_screen *));
                    196: int _tme_gtk_mouse_connections_new _TME_P((struct tme_gtk_display *,
                    197:                                           struct tme_connection **));
                    198: void _tme_gtk_screen_th_update _TME_P((struct tme_gtk_display *));
                    199: void _tme_gtk_display_callout _TME_P((struct tme_gtk_display *,
                    200:                                      int));
                    201: gint _tme_gtk_display_enter_focus _TME_P((GtkWidget *, GdkEvent *, gpointer));
                    202: 
                    203: #endif /* _HOST_GTK_GTK_DISPLAY_H */
                    204: 

unix.superglobalmegacorp.com

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