]> Pileus Git - ~andy/gtk/blob - gdk/gdkim.h
3f3ceb692ca93195e224f9beae731f613f237d00
[~andy/gtk] / gdk / gdkim.h
1 /* International Input Method Support Functions
2  */
3
4 #ifndef __GDK_IM_H__
5 #define __GDK_IM_H__
6
7 #include <gdk/gdkcolor.h>
8 #include <gdk/gdkevents.h>
9 #include <gdk/gdktypes.h>
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif /* __cplusplus */
14
15 typedef struct _GdkIC               GdkIC;
16 typedef struct _GdkICAttr           GdkICAttr;
17
18 typedef enum                    /*< flags >*/
19 {
20   GDK_IM_PREEDIT_AREA      = 0x0001, 
21   GDK_IM_PREEDIT_CALLBACKS = 0x0002, 
22   GDK_IM_PREEDIT_POSITION  = 0x0004,
23   GDK_IM_PREEDIT_NOTHING   = 0x0008,
24   GDK_IM_PREEDIT_NONE      = 0x0010,
25   GDK_IM_PREEDIT_MASK      = 0x001f,
26
27   GDK_IM_STATUS_AREA       = 0x0100, 
28   GDK_IM_STATUS_CALLBACKS  = 0x0200,
29   GDK_IM_STATUS_NOTHING    = 0x0400,
30   GDK_IM_STATUS_NONE       = 0x0800,
31   GDK_IM_STATUS_MASK       = 0x0f00 
32 } GdkIMStyle;
33
34 typedef enum
35 {
36   GDK_IC_STYLE                  = 1 << 0,
37   GDK_IC_CLIENT_WINDOW          = 1 << 1,
38   GDK_IC_FOCUS_WINDOW           = 1 << 2,
39   GDK_IC_FILTER_EVENTS          = 1 << 3,
40   GDK_IC_SPOT_LOCATION          = 1 << 4,
41   GDK_IC_LINE_SPACING           = 1 << 5,
42   GDK_IC_CURSOR                 = 1 << 6,
43
44   GDK_IC_PREEDIT_FONTSET        = 1 << 10,
45   GDK_IC_PREEDIT_AREA           = 1 << 11,
46   GDK_IC_PREEDIT_AREA_NEEDED    = 1 << 12,
47   GDK_IC_PREEDIT_FOREGROUND     = 1 << 13,
48   GDK_IC_PREEDIT_BACKGROUND     = 1 << 14,
49   GDK_IC_PREEDIT_PIXMAP         = 1 << 15,
50   GDK_IC_PREEDIT_COLORMAP       = 1 << 16,
51
52   GDK_IC_STATUS_FONTSET         = 1 << 21,
53   GDK_IC_STATUS_AREA            = 1 << 22,
54   GDK_IC_STATUS_AREA_NEEDED     = 1 << 23,
55   GDK_IC_STATUS_FOREGROUND      = 1 << 24,
56   GDK_IC_STATUS_BACKGROUND      = 1 << 25,
57   GDK_IC_STATUS_PIXMAP          = 1 << 26,
58   GDK_IC_STATUS_COLORMAP        = 1 << 27,
59
60   GDK_IC_ALL_REQ                = GDK_IC_STYLE |
61                                   GDK_IC_CLIENT_WINDOW,
62
63   GDK_IC_PREEDIT_AREA_REQ       = GDK_IC_PREEDIT_AREA | 
64                                   GDK_IC_PREEDIT_FONTSET,
65   GDK_IC_PREEDIT_POSITION_REQ   = GDK_IC_PREEDIT_AREA | GDK_IC_SPOT_LOCATION |
66                                   GDK_IC_PREEDIT_FONTSET,
67
68   GDK_IC_STATUS_AREA_REQ        = GDK_IC_STATUS_AREA | 
69                                   GDK_IC_STATUS_FONTSET
70 } GdkICAttributesType;
71
72 struct _GdkICAttr
73 {
74   GdkIMStyle style;
75   GdkWindow *client_window;
76   GdkWindow *focus_window;
77   GdkEventMask filter_events;
78   GdkPoint spot_location;
79   gint line_spacing;
80   GdkCursor *cursor;
81
82   GdkFont *preedit_fontset;
83   GdkRectangle preedit_area;
84   GdkRectangle preedit_area_needed; 
85   GdkColor preedit_foreground;
86   GdkColor preedit_background;
87   GdkPixmap *preedit_pixmap;
88   GdkColormap *preedit_colormap;
89
90   GdkFont *status_fontset;
91   GdkRectangle status_area;
92   GdkRectangle status_area_needed; 
93   GdkColor status_foreground;
94   GdkColor status_background;
95   GdkPixmap *status_pixmap;
96   GdkColormap *status_colormap;
97 };
98
99 gint         gdk_im_ready          (void);
100
101 void         gdk_im_begin          (GdkIC               *ic, 
102                                     GdkWindow           *window);
103 void         gdk_im_end            (void);
104 GdkIMStyle   gdk_im_decide_style   (GdkIMStyle           supported_style);
105 GdkIMStyle   gdk_im_set_best_style (GdkIMStyle           best_allowed_style);
106
107 GdkIC*       gdk_ic_new            (GdkICAttr           *attr,
108                                     GdkICAttributesType mask);
109 void         gdk_ic_destroy        (GdkIC               *ic);
110 GdkIMStyle   gdk_ic_get_style      (GdkIC               *ic);
111 GdkEventMask gdk_ic_get_events     (GdkIC               *ic);
112
113 GdkICAttr*   gdk_ic_attr_new       (void);
114 void         gdk_ic_attr_destroy   (GdkICAttr *attr);
115
116 GdkICAttributesType  gdk_ic_set_attr (GdkIC              *ic,  
117                                       GdkICAttr          *attr,
118                                       GdkICAttributesType mask);
119 GdkICAttributesType  gdk_ic_get_attr (GdkIC              *ic, 
120                                       GdkICAttr          *attr,
121                                       GdkICAttributesType mask);
122 #ifdef __cplusplus
123 }
124 #endif /* __cplusplus */
125
126 #endif /* __GDK_IM_H__ */