/* * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jp.co.omronsoft.openwnn; import android.content.SharedPreferences; /** * The interface of the text converter accessed from OpenWnn. * <br> * The realization class of this interface should be an singleton class. * * @author Copyright (C) 2009, OMRON SOFTWARE CO., LTD. All Rights Reserved. */ public interface WnnEngine { /* * DEFINITION OF CONSTANTS */ /** The identifier of the learning dictionary */ public static final int DICTIONARY_TYPE_LEARN = 1; /** The identifier of the user dictionary */ public static final int DICTIONARY_TYPE_USER = 2; /* * DEFINITION OF METHODS */ /** * Initialize parameters. */ public void init(); /** * Close the converter. * <br> * * OpenWnn calls this method when it is destroyed. */ public void close(); /** * Predict words/phrases. * <br> * @param text The input string * @param minLen The minimum length of a word to predict (0 : no limit) * @param maxLen The maximum length of a word to predict (-1 : no limit) * @return Plus value if there are candidates; 0 if there is no candidate; minus value if a error occurs. */ public int predict(ComposingText text, int minLen, int maxLen); /** * Convert a string. * <br> * This method is used to consecutive/single clause convert in * Japanese, Pinyin to Kanji convert in Chinese, Hangul to Hanja * convert in Korean, etc. * * The result of conversion is set into the layer 2 in the {@link ComposingText}. * To get other candidates of each clause, call {@link #makeCandidateListOf(int)}. * * @param text The input string * @return Plus value if there are candidates; 0 if there is no candidate; minus value if a error occurs. */ public int convert(ComposingText text); /** * Search words from the dictionaries. * <br> * @param key The search key (stroke) * @return Plus value if there are candidates; 0 if there is no candidate; minus value if a error occurs. */ public int searchWords(String key); /** * Search words from the dictionaries. * <br> * @param word A word to search * @return Plus value if there are candidates; 0 if there is no candidate; minus value if a error occurs. */ public int searchWords(WnnWord word); /** * Get a candidate. * <br> * After {@link #predict(ComposingText, int, int)} or {@link #makeCandidateListOf(int)} or * {@code searchWords()}, call this method to get the * results. This method will return a candidate in decreasing * frequency order for {@link #predict(ComposingText, int, int)} and * {@link #makeCandidateListOf(int)}, in increasing character code order for * {@code searchWords()}. * * @return The candidate; {@code null} if there is no more candidate. */ public WnnWord getNextCandidate(); /** * Retrieve the list of registered words. * <br> * @return {@code null} if no word is registered; the array of {@link WnnWord} if some words is registered. */ public WnnWord[] getUserDictionaryWords(); /** * Learn a word. * <br> * This method is used to register the word selected from * candidates to the learning dictionary or update the frequency * of the word. * * @param word The selected word * @return {@code true} if success; {@code false} if fail or not supported. */ public boolean learn(WnnWord word); /** * Register a word to the user's dictionary. * <br> * @param word A word to register * @return Number of registered words in the user's dictionary after the operation; minus value if a error occurs. */ public int addWord(WnnWord word); /** * Delete a word from the user's dictionary. * <br> * @param word A word to delete * @return {@code true} if success; {@code false} if fail or not supported. */ public boolean deleteWord(WnnWord word); /** * Delete all words from the user's dictionary. * <br> * @param dictionary {@code DICTIONARY_TYPE_LEARN} or {@code DICTIONARY_TYPE_USER} * @return {@code true} if success; {@code false} if fail or not supported. */ public boolean initializeDictionary(int dictionary); /** * Delete all words from the user's dictionary of the specified language. * <br> * @param dictionary {@code DICTIONARY_TYPE_LEARN} or {@code DICTIONARY_TYPE_USER} * @param type Dictionary type (language, etc...) * @return {@code true} if success; {@code false} if fail or not supported. */ public boolean initializeDictionary(int dictionary, int type); /** * Reflect the preferences in the converter. * * @param pref The preferences */ public void setPreferences(SharedPreferences pref); /** * Break the sequence of words. * <br> * This method is used to notice breaking the sequence of input * words to the converter. The converter will stop learning * collocation between previous input words and words which will * input after this break. */ public void breakSequence(); /** * Makes the candidate list. * <br> * This method is used when to make a list of other candidates of * the clause which is in the result of consecutive clause * conversion({@link #convert(ComposingText)}). * To get the elements of the list, call {@link #getNextCandidate()}. * * @param clausePosition The position of a clause * @return Plus value if there are candidates; 0 if there is no candidate; minus value if a error occurs. */ public int makeCandidateListOf(int clausePosition); }