1 #ifndef __CHIMARA_GLK_PRIVATE_H__
2 #define __CHIMARA_GLK_PRIVATE_H__
6 #include <pango/pango.h>
11 #include "chimara-glk.h"
15 typedef struct _ChimaraGlkPrivate ChimaraGlkPrivate;
17 struct _ChimaraGlkPrivate {
18 /* Pointer back to the widget itself for use in thread */
21 /* *** Widget properties *** */
22 /* Whether user input is expected */
24 /* Whether file operations are allowed */
26 /* Font description of proportional font */
27 PangoFontDescription *default_font_desc;
28 /* Font description of monospace font */
29 PangoFontDescription *monospace_font_desc;
30 /* Spacing between Glk windows */
32 /* The CSS file to read style defaults from */
34 /* Hashtable containing the default and current style */
35 struct StyleSet *default_styles;
36 struct StyleSet *current_styles;
37 gboolean style_initialized; /* Have styles been initialized */
38 /* Final message displayed when game exits */
41 /* *** Threading data *** */
42 /* Whether program is running */
44 /* Glk program loaded in widget */
46 /* Thread in which Glk program is run */
48 /* Event queue and threading stuff */
51 GCond *event_queue_not_empty;
52 GCond *event_queue_not_full;
55 gboolean abort_signalled;
56 /* Key press after shutdown mechanism */
57 GMutex *shutdown_lock;
58 GCond *shutdown_key_pressed;
59 /* Window arrangement locks */
62 gboolean needs_rearrange;
63 gboolean ignore_next_arrange_event;
65 GAsyncQueue *char_input_queue;
66 GAsyncQueue *line_input_queue;
68 /* *** Glk library data *** */
69 /* User-defined interrupt handler */
70 void (*interrupt_handler)(void);
71 /* Global tree of all windows */
73 /* List of filerefs currently in existence */
76 strid_t current_stream;
77 /* List of streams currently in existence */
81 /* Current resource blorb map */
82 giblorb_map_t *resource_map;
83 /* File stream pointing to the blorb used as current resource map */
84 strid_t resource_file;
85 /* Callbacks for registering and unregistering dispatch objects */
86 gidispatch_rock_t (*register_obj)(void *, glui32);
87 void (*unregister_obj)(void *, glui32, gidispatch_rock_t);
88 gidispatch_rock_t (*register_arr)(void *, glui32, char *);
89 void (*unregister_arr)(void *, glui32, char *, gidispatch_rock_t);
91 /* *** Platform-dependent Glk library data *** */
92 /* Flag for functions to find out if they are being called from startup code */
94 /* "Current directory" for creating filerefs */
98 #define CHIMARA_GLK_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), CHIMARA_TYPE_GLK, ChimaraGlkPrivate))
99 #define CHIMARA_GLK_USE_PRIVATE(o, n) ChimaraGlkPrivate *n = CHIMARA_GLK_PRIVATE(o)
103 #endif /* __CHIMARA_GLK_PRIVATE_H__ */