JNIEXPORT jstring JNICALL Java_com_sxc_homekeytestforndk_Zinnia_initData(JNIEnv* env, jclass thiz,jstring data) { int len = (*env)->GetStringLength(env, data); char outbuf [len]; (*env)->GetStringUTFRegion(env, data, 0, len, outbuf); zinnia_recognizer_t *recognizer = zinnia_recognizer_new(); zinnia_character_t *character = zinnia_character_new(); if (!zinnia_recognizer_open(recognizer, "/data/data/com.sxc.homekeytestforndk/files/test.model")) { return (*env)->NewStringUTF(env, "can not found the model file"); } if (!zinnia_character_parse(character, outbuf)) { return (*env)->NewStringUTF(env, "can not parse"); } zinnia_result_t *result = zinnia_recognizer_classify(recognizer, character, 10); size_t i; if (!result) { return (*env)->NewStringUTF(env, "3error"); } int length = zinnia_result_size(result); char buf[3*length]; memset(buf, 0, 3*length); for (i = 0; i < length; ++i) { strcpy(&buf[3*i],zinnia_result_value(result,i)); } // strcpy(&buf[0],zinnia_result_value(result,0)); // strcpy(&buf[3],zinnia_result_value(result,1)); zinnia_result_destroy(result); zinnia_character_destroy(character); zinnia_recognizer_destroy(recognizer); return (*env)->NewStringUTF(env,buf); }
static void ibus_handwrite_recog_zinnia_destory(GObject*obj) { IbusHandwriteRecogZinnia * thisobj = IBUS_HANDWRITE_RECOG_ZINNIA(obj); zinnia_recognizer_destroy(thisobj->recognizer); IBUS_HANDWRITE_RECOG_ZINNIA_GET_CLASS(obj)->parentdestroy(obj); }
int main(int argc, char **argv) { size_t i; zinnia_recognizer_t *recognizer; zinnia_character_t *character; zinnia_result_t *result; recognizer = zinnia_recognizer_new(); if (!zinnia_recognizer_open(recognizer, "/usr/local/lib/zinnia/model/tomoe/handwriting-ja.model")) { fprintf(stderr, "ERROR: %s\n", zinnia_recognizer_strerror(recognizer)); return -1; } zinnia_character_t *character = zinnia_character_new(); zinnia_character_clear(character); zinnia_character_set_width(character, 300); zinnia_character_set_height(character, 300); zinnia_character_add(character, 0, 51, 29); zinnia_character_add(character, 0, 117, 41); zinnia_character_add(character, 1, 99, 65); zinnia_character_add(character, 1, 219, 77); zinnia_character_add(character, 2, 27, 131); zinnia_character_add(character, 2, 261, 131); zinnia_character_add(character, 3, 129, 17); zinnia_character_add(character, 3, 57, 203); zinnia_character_add(character, 4, 111, 71); zinnia_character_add(character, 4, 219, 173); zinnia_character_add(character, 5, 81, 161); zinnia_character_add(character, 5, 93, 281); zinnia_character_add(character, 6, 99, 167); zinnia_character_add(character, 6, 207, 167); zinnia_character_add(character, 6, 189, 245); zinnia_character_add(character, 7, 99, 227); zinnia_character_add(character, 7, 189, 227); zinnia_character_add(character, 8, 111, 257); zinnia_character_add(character, 8, 189, 245); result = zinnia_recognizer_classify(recognizer, character, 10); if (result == NULL) { fprintf(stderr, "%s\n", zinnia_recognizer_strerror(recognizer)); return -1; } for (i = 0; i < zinnia_result_size(result); ++i) { fprintf(stdout, "%s\t%f\n", zinnia_result_value(result, i), zinnia_result_score(result, i)); } zinnia_result_destroy(result); zinnia_character_destroy(character); zinnia_recognizer_destroy(recognizer); return 0; }
/*============================================================================*/ ChandWriter::~ChandWriter() { close(); #ifdef USE_ZINNIA if ( Cgraphics::m_defaults.handwriting_detection_enabled) { zinnia_character_destroy( m_character); zinnia_recognizer_destroy( m_recognizer); } #endif }
int handwritor::destroy (void) { if (destroyed) { return -1; } if (this->candidate_layout) { QHBoxLayout * d = this->candidate_layout; this->candidate_layout = NULL; delete d; } if (this->option_layout) { QVBoxLayout * d = this->option_layout; this->option_layout = NULL; delete d; } if (this->writor_layout) { QHBoxLayout * d = this->writor_layout; this->writor_layout = NULL; delete d; } if (this->master_layout) { QVBoxLayout * d = this->master_layout; this->master_layout = NULL; delete d; } if (this->recognizer) { zinnia_recognizer_t * d = this->recognizer; this->recognizer = NULL; (void)zinnia_recognizer_close(d); (void)zinnia_recognizer_destroy(d); } this->destroyed = true; return 0; } /* handwritor::destroy */
/* * Class: com_key_handwrite_Zinnia * Method: zinnia_recognizer_destroy * Signature: (J)V */ JNIEXPORT void JNICALL Java_com_key_handwrite_Zinnia_zinnia_1recognizer_1destroy (JNIEnv *env, jobject jobj, jlong recognizer) { zinnia_recognizer_t* p = reinterpret_cast<zinnia_recognizer_t*>(recognizer); zinnia_recognizer_destroy(p); }
void ZinniaDestroy(void* ud) { Zinnia* zn = (Zinnia*) ud; zinnia_result_destroy(zn->result); zinnia_recognizer_destroy(zn->recog); free(zn->candidates); }