blob: 4aa8c8ccb9a203ccbd84fba4554c5fe44d53091e [file] [log] [blame]
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",