00001
00002
00003
00004 #ifndef __GDK_IM_H__
00005 #define __GDK_IM_H__
00006
00007 #include <gdk/gdkcolor.h>
00008 #include <gdk/gdkevents.h>
00009 #include <gdk/gdktypes.h>
00010
00011 #ifdef __cplusplus
00012 extern "C" {
00013 #endif
00014
00015 typedef struct _GdkIC GdkIC;
00016 typedef struct _GdkICAttr GdkICAttr;
00017
00018 typedef enum {
00019 GDK_IM_PREEDIT_AREA = 0x0001,
00020 GDK_IM_PREEDIT_CALLBACKS = 0x0002,
00021 GDK_IM_PREEDIT_POSITION = 0x0004,
00022 GDK_IM_PREEDIT_NOTHING = 0x0008,
00023 GDK_IM_PREEDIT_NONE = 0x0010,
00024 GDK_IM_PREEDIT_MASK = 0x001f,
00025
00026 GDK_IM_STATUS_AREA = 0x0100,
00027 GDK_IM_STATUS_CALLBACKS = 0x0200,
00028 GDK_IM_STATUS_NOTHING = 0x0400,
00029 GDK_IM_STATUS_NONE = 0x0800,
00030 GDK_IM_STATUS_MASK = 0x0f00
00031 } GdkIMStyle;
00032
00033 typedef enum {
00034 GDK_IC_STYLE = 1 << 0,
00035 GDK_IC_CLIENT_WINDOW = 1 << 1,
00036 GDK_IC_FOCUS_WINDOW = 1 << 2,
00037 GDK_IC_FILTER_EVENTS = 1 << 3,
00038 GDK_IC_SPOT_LOCATION = 1 << 4,
00039 GDK_IC_LINE_SPACING = 1 << 5,
00040 GDK_IC_CURSOR = 1 << 6,
00041
00042 GDK_IC_PREEDIT_FONTSET = 1 << 10,
00043 GDK_IC_PREEDIT_AREA = 1 << 11,
00044 GDK_IC_PREEDIT_AREA_NEEDED = 1 << 12,
00045 GDK_IC_PREEDIT_FOREGROUND = 1 << 13,
00046 GDK_IC_PREEDIT_BACKGROUND = 1 << 14,
00047 GDK_IC_PREEDIT_PIXMAP = 1 << 15,
00048 GDK_IC_PREEDIT_COLORMAP = 1 << 16,
00049
00050 GDK_IC_STATUS_FONTSET = 1 << 21,
00051 GDK_IC_STATUS_AREA = 1 << 22,
00052 GDK_IC_STATUS_AREA_NEEDED = 1 << 23,
00053 GDK_IC_STATUS_FOREGROUND = 1 << 24,
00054 GDK_IC_STATUS_BACKGROUND = 1 << 25,
00055 GDK_IC_STATUS_PIXMAP = 1 << 26,
00056 GDK_IC_STATUS_COLORMAP = 1 << 27,
00057
00058 GDK_IC_ALL_REQ = GDK_IC_STYLE | GDK_IC_CLIENT_WINDOW,
00059
00060 GDK_IC_PREEDIT_AREA_REQ = GDK_IC_PREEDIT_AREA |
00061 GDK_IC_PREEDIT_FONTSET,
00062 GDK_IC_PREEDIT_POSITION_REQ =
00063 GDK_IC_PREEDIT_AREA | GDK_IC_SPOT_LOCATION |
00064 GDK_IC_PREEDIT_FONTSET,
00065
00066 GDK_IC_STATUS_AREA_REQ = GDK_IC_STATUS_AREA | GDK_IC_STATUS_FONTSET
00067 } GdkICAttributesType;
00068
00069 struct _GdkICAttr {
00070 GdkIMStyle style;
00071 GdkWindow *client_window;
00072 GdkWindow *focus_window;
00073 GdkEventMask filter_events;
00074 GdkPoint spot_location;
00075 gint line_spacing;
00076 GdkCursor *cursor;
00077
00078 GdkFont *preedit_fontset;
00079 GdkRectangle preedit_area;
00080 GdkRectangle preedit_area_needed;
00081 GdkColor preedit_foreground;
00082 GdkColor preedit_background;
00083 GdkPixmap *preedit_pixmap;
00084 GdkColormap *preedit_colormap;
00085
00086 GdkFont *status_fontset;
00087 GdkRectangle status_area;
00088 GdkRectangle status_area_needed;
00089 GdkColor status_foreground;
00090 GdkColor status_background;
00091 GdkPixmap *status_pixmap;
00092 GdkColormap *status_colormap;
00093 };
00094
00095 gboolean gdk_im_ready(void);
00096
00097 void gdk_im_begin(GdkIC * ic, GdkWindow * window);
00098 void gdk_im_end(void);
00099 GdkIMStyle gdk_im_decide_style(GdkIMStyle supported_style);
00100 GdkIMStyle gdk_im_set_best_style(GdkIMStyle best_allowed_style);
00101
00102 GdkIC *gdk_ic_new(GdkICAttr * attr, GdkICAttributesType mask);
00103 void gdk_ic_destroy(GdkIC * ic);
00104 GdkIMStyle gdk_ic_get_style(GdkIC * ic);
00105 GdkEventMask gdk_ic_get_events(GdkIC * ic);
00106
00107 GdkICAttr *gdk_ic_attr_new(void);
00108 void gdk_ic_attr_destroy(GdkICAttr * attr);
00109
00110 GdkICAttributesType gdk_ic_set_attr(GdkIC * ic,
00111 GdkICAttr * attr,
00112 GdkICAttributesType mask);
00113 GdkICAttributesType gdk_ic_get_attr(GdkIC * ic,
00114 GdkICAttr * attr,
00115 GdkICAttributesType mask);
00116 #ifdef __cplusplus
00117 }
00118 #endif
00119 #endif