summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChoe Hwanjin <choe.hwanjin@gmail.com>2007-05-28 22:25:15 +0900
committerChoe Hwanjin <choe.hwanjin@gmail.com>2007-05-28 22:25:15 +0900
commit43ec6f1e0e6b3c9a2b802bee7f4026abb1a5547f (patch)
tree0be01a2d2741e9d50a145f3359c35a05511f254a
parentf695df3f61a1cde2854119e22cb5ac3f6b911753 (diff)
downloadlibhangul-43ec6f1e0e6b3c9a2b802bee7f4026abb1a5547f.tar.gz
callback function 등록하는 api 수정
* hangul_ic_connect_callback() 사용 * callback function type 제거 git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@120 8f00fcd2-89fc-0310-932e-b01be5b65e01
-rw-r--r--hangul/hangul.h18
-rw-r--r--hangul/hangulinputcontext.c24
2 files changed, 26 insertions, 16 deletions
diff --git a/hangul/hangul.h b/hangul/hangul.h
index 97c0f34..fa4a9a5 100644
--- a/hangul/hangul.h
+++ b/hangul/hangul.h
@@ -67,15 +67,6 @@ typedef struct _HangulCombination HangulCombination;
typedef struct _HangulBuffer HangulBuffer;
typedef struct _HangulInputContext HangulInputContext;
-typedef bool (*HangulOnTransition) (HangulInputContext*,
- ucschar,
- const ucschar*,
- void*);
-typedef void (*HangulOnTranslate) (HangulInputContext*,
- int,
- ucschar*,
- void*);
-
enum {
HANGUL_OUTPUT_SYLLABLE,
HANGUL_OUTPUT_JAMO
@@ -120,13 +111,8 @@ void hangul_ic_select_keyboard(HangulInputContext *hic,
const char* id);
void hangul_ic_set_combination(HangulInputContext *hic,
const HangulCombination *combination);
-
-void hangul_ic_connect_translate (HangulInputContext* hic,
- HangulOnTranslate callback,
- void* user_data);
-void hangul_ic_connect_transition(HangulInputContext* hic,
- HangulOnTransition callback,
- void* user_data);
+void hangul_ic_connect_callback(HangulInputContext* hic, const char* event,
+ void* callback, void* user_data);
const ucschar* hangul_ic_get_preedit_string(HangulInputContext *hic);
const ucschar* hangul_ic_get_commit_string(HangulInputContext *hic);
diff --git a/hangul/hangulinputcontext.c b/hangul/hangulinputcontext.c
index 07fca98..b10b904 100644
--- a/hangul/hangulinputcontext.c
+++ b/hangul/hangulinputcontext.c
@@ -30,6 +30,15 @@
#define N_ELEMENTS(array) (sizeof(array) / sizeof(array[0]))
#define HANGUL_KEYBOARD_TABLE_SIZE 0x80
+typedef void (*HangulOnTranslate) (HangulInputContext*,
+ int,
+ ucschar*,
+ void*);
+typedef bool (*HangulOnTransition) (HangulInputContext*,
+ ucschar,
+ const ucschar*,
+ void*);
+
typedef struct _HangulCombinationItem HangulCombinationItem;
struct _HangulKeyboard {
@@ -1045,6 +1054,21 @@ hangul_ic_connect_transition(HangulInputContext* hic,
}
}
+void hangul_ic_connect_callback(HangulInputContext* hic, const char* event,
+ void* callback, void* user_data)
+{
+ if (hic == NULL || event == NULL)
+ return;
+
+ if (strcasecmp(event, "translate") == 0) {
+ hic->on_translate = (HangulOnTranslate)callback;
+ hic->on_translate_data = user_data;
+ } else if (strcasecmp(event, "transition") == 0) {
+ hic->on_transition = (HangulOnTransition)callback;
+ hic->on_transition_data = user_data;
+ }
+}
+
void hangul_ic_set_filter(HangulInputContext *hic,
HangulICFilter func, void *user_data)
{