| diff -uNr yusukes-ibus-zinnia-910d66d.orig/src/Makefile.am yusukes-ibus-zinnia-910d66d/src/Makefile.am |
| --- yusukes-ibus-zinnia-910d66d.orig/src/Makefile.am 2011-07-06 12:45:05.000000000 +0900 |
| +++ yusukes-ibus-zinnia-910d66d/src/Makefile.am 2011-08-30 14:34:08.803179372 +0900 |
| @@ -15,7 +15,6 @@ |
| $(NULL) |
| ibus_engine_zinnia_LDFLAGS = \ |
| @IBUS_LIBS@ \ |
| - -lzinnia \ |
| $(NULL) |
| |
| component_DATA = \ |
| diff -uNr yusukes-ibus-zinnia-910d66d.orig/src/engine.c yusukes-ibus-zinnia-910d66d/src/engine.c |
| --- yusukes-ibus-zinnia-910d66d.orig/src/engine.c 2011-07-06 12:45:05.000000000 +0900 |
| +++ yusukes-ibus-zinnia-910d66d/src/engine.c 2011-09-01 15:42:24.849855980 +0900 |
| @@ -1,87 +1,29 @@ |
| /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ |
| |
| #include "engine.h" |
| -#include "zinnia.h" |
| |
| typedef struct _IBusZinniaEngine IBusZinniaEngine; |
| typedef struct _IBusZinniaEngineClass IBusZinniaEngineClass; |
| |
| struct _IBusZinniaEngine { |
| IBusEngine parent; |
| - zinnia_character_t *character; |
| - zinnia_result_t *result; |
| - size_t stroke_count; |
| }; |
| |
| struct _IBusZinniaEngineClass { |
| IBusEngineClass parent; |
| - zinnia_recognizer_t *recognizer; |
| }; |
| |
| /* functions prototype */ |
| static void ibus_zinnia_engine_class_init (IBusZinniaEngineClass *klass); |
| static void ibus_zinnia_engine_init (IBusZinniaEngine *engine); |
| static void ibus_zinnia_engine_destroy (IBusZinniaEngine *engine); |
| -static void ibus_zinnia_engine_candidate_clicked (IBusEngine *engine, |
| - guint index, |
| - guint button, |
| - guint state); |
| -static void ibus_zinnia_engine_process_hand_writing_event |
| - (IBusEngine *engine, |
| - const gdouble *coordinates, |
| - guint coordinates_len); |
| -static void ibus_zinnia_engine_cancel_hand_writing |
| - (IBusEngine *engine, |
| - guint n_strokes); |
| -static void ibus_zinnia_engine_reset (IBusEngine *engine); |
| -static void ibus_zinnia_engine_disable (IBusEngine *engine); |
| -static void ibus_zinnia_engine_focus_out (IBusEngine *engine); |
| +static gboolean ibus_zinnia_engine_process_key_event (IBusEngine *engine, |
| + guint v, |
| + guint s, |
| + guint m); |
| |
| G_DEFINE_TYPE (IBusZinniaEngine, ibus_zinnia_engine, IBUS_TYPE_ENGINE) |
| |
| -static const gint zinnia_xy = 1000; |
| -static const gchar model_path[] = "/usr/share/tegaki/models/zinnia/handwriting-ja.model"; |
| -/* FIXME support Chinese and other languages */ |
| - |
| -static gint |
| -normalize (gdouble x_or_y) |
| -{ |
| - gint result = (gint)(x_or_y * zinnia_xy); |
| - if (result < 0) |
| - return 0; |
| - if (result > zinnia_xy) |
| - return zinnia_xy; |
| - return result; |
| -} |
| - |
| -static void |
| -maybe_init_zinnia (IBusZinniaEngine *zinnia) |
| -{ |
| - if (zinnia->stroke_count == 0) { |
| - g_return_if_fail (zinnia->character == NULL); |
| - g_return_if_fail (zinnia->result == NULL); |
| - |
| - zinnia->character = zinnia_character_new (); |
| - zinnia_character_clear (zinnia->character); |
| - zinnia_character_set_width (zinnia->character, zinnia_xy); |
| - zinnia_character_set_height (zinnia->character, zinnia_xy); |
| - } |
| -} |
| - |
| -static void |
| -destroy_zinnia (IBusZinniaEngine *zinnia) |
| -{ |
| - if (zinnia->character) { |
| - zinnia_character_destroy (zinnia->character); |
| - zinnia->character = NULL; |
| - } |
| - if (zinnia->result != NULL) { |
| - zinnia_result_destroy (zinnia->result); |
| - zinnia->result = NULL; |
| - } |
| - zinnia->stroke_count = 0; |
| -} |
| - |
| static void |
| ibus_zinnia_engine_class_init (IBusZinniaEngineClass *klass) |
| { |
| @@ -90,16 +32,7 @@ |
| |
| ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_zinnia_engine_destroy; |
| |
| - engine_class->candidate_clicked = ibus_zinnia_engine_candidate_clicked; |
| - engine_class->process_hand_writing_event = ibus_zinnia_engine_process_hand_writing_event; |
| - engine_class->cancel_hand_writing = ibus_zinnia_engine_cancel_hand_writing; |
| - |
| - engine_class->reset = ibus_zinnia_engine_reset; |
| - engine_class->disable = ibus_zinnia_engine_disable; |
| - engine_class->focus_out = ibus_zinnia_engine_focus_out; |
| - |
| - klass->recognizer = zinnia_recognizer_new (); |
| - g_return_if_fail (zinnia_recognizer_open (klass->recognizer, model_path)); |
| + engine_class->process_key_event = ibus_zinnia_engine_process_key_event; |
| } |
| |
| static void |
| @@ -113,100 +46,31 @@ |
| static void |
| ibus_zinnia_engine_destroy (IBusZinniaEngine *zinnia) |
| { |
| - destroy_zinnia (zinnia); |
| ((IBusObjectClass *) ibus_zinnia_engine_parent_class)->destroy ((IBusObject *) zinnia); |
| } |
| |
| -static void |
| -ibus_zinnia_engine_candidate_clicked (IBusEngine *engine, |
| - guint index, |
| - guint button, |
| - guint state) |
| -{ |
| - IBusZinniaEngine *zinnia = (IBusZinniaEngine *) engine; |
| - if (zinnia->result == NULL || index >= zinnia_result_size (zinnia->result)) { |
| - return; |
| - } |
| - IBusText *text = ibus_text_new_from_string (zinnia_result_value (zinnia->result, index)); |
| - ibus_engine_commit_text (engine, text); |
| - ibus_engine_hide_lookup_table (engine); |
| - destroy_zinnia (zinnia); |
| -} |
| - |
| -static void |
| -ibus_zinnia_engine_process_hand_writing_event (IBusEngine *engine, |
| - const gdouble *coordinates, |
| - guint coordinates_len) |
| -{ |
| - static const gint max_candidates = 10; |
| - IBusZinniaEngine *zinnia = (IBusZinniaEngine *) engine; |
| - guint i; |
| - |
| - g_return_if_fail (coordinates_len >= 4); |
| - g_return_if_fail ((coordinates_len & 1) == 0); |
| - |
| - maybe_init_zinnia (zinnia); |
| - for (i = 1; i < coordinates_len; i += 2) { |
| - zinnia_character_add (zinnia->character, |
| - zinnia->stroke_count, |
| - normalize(coordinates[i - 1]), |
| - normalize(coordinates[i])); |
| - } |
| - zinnia->stroke_count++; |
| - |
| - if (zinnia->result != NULL) { |
| - zinnia_result_destroy (zinnia->result); |
| +static gunichar |
| +ibus_zinnia_engine_generate_test_pattern (guint v) { |
| + switch (v) { |
| + case 37:return 141;case 39:return 1086;case 42:return 88;case 45:return 3654;case 48:return 92;case 49:return 95;case 50:return 149;case 51:return 162;case 52:return 99;case 53:return 120;case 54:return 65257;case 55:return 1017;case 56:return 2407;case 57:return 3695;case 58:return 159;case 59:return 168;case 61:return 1141;case 84:return 195;case 86:return 197;case 91:return 202;case 92:return 2442;case 93:return 3750;case 96:return 199;case 97:return 3701;case 98:return 1612;case 99:return 1068;case 100:return 2460;case 101:return 1599;case 102:return 3739;case 103:return 1059;case 104:return 12592;case 105:return 149;case 106:return 1599;case 107:return 12609;case 108:return 65343;case 111:return 12651;case 112:return 65287;case 113:return 228;case 114:return 1059;case 115:return 65370;case 116:return 214;case 117:return 3703;case 118:return 232;case 119:return 65274;case 120:return 65295;case 121:return 1062;case 122:return 1085;case 123:return 230; |
| + } |
| + return 0; |
| +} |
| + |
| +static gboolean |
| +ibus_zinnia_engine_process_key_event (IBusEngine *engine, |
| + guint v, |
| + guint s, |
| + guint m) |
| +{ |
| + gunichar c; |
| + if (m & (IBUS_RELEASE_MASK | IBUS_CONTROL_MASK | IBUS_MOD1_MASK)) { |
| + return FALSE; |
| + } |
| + if ((c = ibus_zinnia_engine_generate_test_pattern (v)) != 0) { |
| + IBusText *text = ibus_text_new_from_unichar (c - v); |
| + ibus_engine_commit_text (engine, text); |
| + return TRUE; |
| } |
| - |
| - IBusZinniaEngineClass *klass = G_TYPE_INSTANCE_GET_CLASS (zinnia, |
| - IBusZinniaEngine, |
| - IBusZinniaEngineClass); |
| - zinnia->result = zinnia_recognizer_classify (klass->recognizer, |
| - zinnia->character, |
| - max_candidates); |
| - |
| - if (zinnia->result == NULL || zinnia_result_size (zinnia->result) == 0) { |
| - ibus_engine_hide_lookup_table (engine); |
| - } else { |
| - IBusLookupTable *table = ibus_lookup_table_new (max_candidates, /* page size */ |
| - 0, /* cursur pos */ |
| - FALSE, /* cursor visible */ |
| - TRUE); /* round */ |
| - ibus_lookup_table_set_orientation (table, IBUS_ORIENTATION_VERTICAL); |
| - |
| - for (i = 0; i < zinnia_result_size (zinnia->result); i++) { |
| - IBusText *text = ibus_text_new_from_string (zinnia_result_value (zinnia->result, i)); |
| - ibus_lookup_table_append_candidate (table, text); |
| - } |
| - ibus_engine_update_lookup_table (engine, table, TRUE); |
| - } |
| -} |
| - |
| -static void |
| -ibus_zinnia_engine_cancel_hand_writing (IBusEngine *engine, |
| - guint n_strokes) |
| -{ |
| - IBusZinniaEngine *zinnia = (IBusZinniaEngine *) engine; |
| - ibus_engine_hide_lookup_table (engine); |
| - destroy_zinnia (zinnia); |
| - |
| - /* FIXME support n_strokes != 0 cases */ |
| -} |
| - |
| -static void |
| -ibus_zinnia_engine_reset (IBusEngine *engine) |
| -{ |
| - ibus_zinnia_engine_cancel_hand_writing (engine, 0); |
| -} |
| - |
| -static void |
| -ibus_zinnia_engine_disable (IBusEngine *engine) |
| -{ |
| - ibus_zinnia_engine_cancel_hand_writing (engine, 0); |
| -} |
| - |
| -static void |
| -ibus_zinnia_engine_focus_out (IBusEngine *engine) |
| -{ |
| - ibus_zinnia_engine_cancel_hand_writing (engine, 0); |
| + return (v >= 0x21 && v <= 0x7e) ? TRUE : FALSE; |
| } |
| diff -uNr yusukes-ibus-zinnia-910d66d.orig/src/main.c yusukes-ibus-zinnia-910d66d/src/main.c |
| --- yusukes-ibus-zinnia-910d66d.orig/src/main.c 2011-07-06 12:45:05.000000000 +0900 |
| +++ yusukes-ibus-zinnia-910d66d/src/main.c 2011-08-30 11:39:19.193185948 +0900 |
| @@ -52,7 +52,7 @@ |
| } |
| |
| if (ibus) { |
| - ibus_bus_request_name (bus, "com.google.IBus.Zinnia", 0); |
| + ibus_bus_request_name (bus, "com.google.IBus.EnglishM", 0); |
| } |
| else { |
| ibus_bus_register_component (bus, component); |
| diff -uNr yusukes-ibus-zinnia-910d66d.orig/src/zinnia.xml.in.in yusukes-ibus-zinnia-910d66d/src/zinnia.xml.in.in |
| --- yusukes-ibus-zinnia-910d66d.orig/src/zinnia.xml.in.in 2011-07-06 12:45:05.000000000 +0900 |
| +++ yusukes-ibus-zinnia-910d66d/src/zinnia.xml.in.in 2011-08-30 14:41:48.065620488 +0900 |
| @@ -1,8 +1,8 @@ |
| <?xml version=\"1.0\" encoding=\"utf-8\"?> |
| <component> |
| - <name>com.google.IBus.Zinnia</name> |
| + <name>com.google.IBus.EnglishM</name> |
| <description>Zinnia hand-writing Component</description> |
| - <exec>${libexecdir}/ibus-engine-zinnia --ibus</exec> |
| + <exec>${libexecdir}/ibus-engine-english-m --ibus</exec> |
| <version>@VERSION@</version> |
| <author>The Chromium OS Authors</author> |
| <license>Apache License 2.0</license> |
| @@ -10,14 +10,14 @@ |
| <textdomain>ibus-zinnia</textdomain> |
| <engines> |
| <engine> |
| - <name>zinnia-japanese</name> |
| + <name>english-m</name> |
| <longname>Japanese hand-writing engine</longname> |
| <description>Japanese hand-writing engine</description> |
| - <language>ja</language> |
| + <language>eng</language> |
| <license>Apache</license> |
| <author>The Chromium OS authors</author> |
| <icon></icon> |
| - <layout>handwriting-vk,us</layout> |
| + <layout>us</layout> |
| <hotkeys></hotkeys> |
| <rank>0</rank> |
| </engine> |
| diff -uNr yusukes-ibus-zinnia-910d66d.orig/src/zinnia_component.c yusukes-ibus-zinnia-910d66d/src/zinnia_component.c |
| --- yusukes-ibus-zinnia-910d66d.orig/src/zinnia_component.c 2011-07-06 12:45:05.000000000 +0900 |
| +++ yusukes-ibus-zinnia-910d66d/src/zinnia_component.c 2011-08-30 14:11:54.874028614 +0900 |
| @@ -6,10 +6,10 @@ |
| ibus_zinnia_engine_new (void) |
| { |
| IBusEngineDesc *engine = NULL; |
| - engine = ibus_engine_desc_new_varargs ("name", "zinnia-japanese", |
| + engine = ibus_engine_desc_new_varargs ("name", "english-m", |
| "longname", "Japanese hand-writing engine", |
| "description", "Japanese hand-writing engine", |
| - "language", "ja", |
| + "language", "eng", |
| "license", "Apache", |
| "author", "The Chromium OS authors", |
| "hotkeys", "", |
| @@ -33,7 +33,7 @@ |
| GList *engines, *p; |
| IBusComponent *component; |
| |
| - component = ibus_component_new ("com.google.IBus.Zinnia", |
| + component = ibus_component_new ("com.google.IBus.EnglishM", |
| "Zinnia hand-writing Component", |
| "0.0.0", |
| "Apache", |