Merge "Add skeleton classes for gesture"
commit
aee43c4f57
|
@ -47,7 +47,8 @@ LATIN_IME_CORE_SRC_FILES := \
|
|||
dictionary.cpp \
|
||||
proximity_info.cpp \
|
||||
proximity_info_state.cpp \
|
||||
unigram_dictionary.cpp
|
||||
unigram_dictionary.cpp \
|
||||
gesture/build_check.cpp
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
$(LATIN_IME_JNI_SRC_FILES) \
|
||||
|
|
|
@ -43,6 +43,8 @@ Dictionary::Dictionary(void *dict, int dictSize, int mmapFd, int dictBufAdjust,
|
|||
mUnigramDictionary = new UnigramDictionary(mDict + headerSize, typedLetterMultiplier,
|
||||
fullWordMultiplier, maxWordLength, maxWords, options);
|
||||
mBigramDictionary = new BigramDictionary(mDict + headerSize, maxWordLength);
|
||||
mGestureDecoder = new GestureDecoder(maxWordLength, maxWords);
|
||||
mGestureDecoder->setDict(mUnigramDictionary, mBigramDictionary);
|
||||
}
|
||||
|
||||
Dictionary::~Dictionary() {
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "bigram_dictionary.h"
|
||||
#include "char_utils.h"
|
||||
#include "defines.h"
|
||||
#include "gesture/gesture_decoder.h"
|
||||
#include "proximity_info.h"
|
||||
#include "unigram_dictionary.h"
|
||||
#include "words_priority_queue_pool.h"
|
||||
|
@ -39,13 +40,20 @@ class Dictionary {
|
|||
bool useFullEditDistance, unsigned short *outWords,
|
||||
int *frequencies, int *spaceIndices) {
|
||||
int result = 0;
|
||||
std::map<int, int> bigramMap;
|
||||
uint8_t bigramFilter[BIGRAM_FILTER_BYTE_SIZE];
|
||||
mBigramDictionary->fillBigramAddressToFrequencyMapAndFilter(prevWordChars,
|
||||
prevWordLength, &bigramMap, bigramFilter);
|
||||
result = mUnigramDictionary->getSuggestions(proximityInfo, xcoordinates,
|
||||
ycoordinates, codes, codesSize, &bigramMap, bigramFilter,
|
||||
useFullEditDistance, outWords, frequencies);
|
||||
if (isGesture) {
|
||||
mGestureDecoder->setPrevWord(prevWordChars, prevWordLength);
|
||||
result = mGestureDecoder->getSuggestions(proximityInfo, xcoordinates, ycoordinates,
|
||||
times, pointerIds, codes, codesSize, commitPoint, dicTypeId == 1 /* main */,
|
||||
outWords, frequencies, spaceIndices);
|
||||
} else {
|
||||
std::map<int, int> bigramMap;
|
||||
uint8_t bigramFilter[BIGRAM_FILTER_BYTE_SIZE];
|
||||
mBigramDictionary->fillBigramAddressToFrequencyMapAndFilter(prevWordChars,
|
||||
prevWordLength, &bigramMap, bigramFilter);
|
||||
result = mUnigramDictionary->getSuggestions(proximityInfo, xcoordinates,
|
||||
ycoordinates, codes, codesSize, &bigramMap, bigramFilter,
|
||||
useFullEditDistance, outWords, frequencies);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -79,6 +87,7 @@ class Dictionary {
|
|||
|
||||
const UnigramDictionary *mUnigramDictionary;
|
||||
const BigramDictionary *mBigramDictionary;
|
||||
GestureDecoder *mGestureDecoder;
|
||||
};
|
||||
|
||||
// public static utility methods
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "gesture_decoder.h"
|
||||
|
||||
namespace latinime {
|
||||
};
|
||||
// namespace latinime
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef LATINIME_GESTURE_DECODER_H
|
||||
#define LATINIME_GESTURE_DECODER_H
|
||||
|
||||
#include "defines.h"
|
||||
#include "gesture_decoder_impl.h"
|
||||
|
||||
namespace latinime {
|
||||
|
||||
class GestureDecoder : public GestureDecoderImpl {
|
||||
|
||||
public:
|
||||
GestureDecoder(int maxWordLength, int maxWords) :
|
||||
GestureDecoderImpl(maxWordLength, maxWords) {
|
||||
}
|
||||
|
||||
private:
|
||||
DISALLOW_IMPLICIT_CONSTRUCTORS(GestureDecoder);
|
||||
};
|
||||
} // namespace latinime
|
||||
|
||||
#endif // LATINIME_INCREMENTAL_DECODER_H
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef LATINIME_GESTURE_DECODER_IMPL_H
|
||||
#define LATINIME_GESTURE_DECODER_IMPL_H
|
||||
|
||||
#include "defines.h"
|
||||
#include "incremental_decoder.h"
|
||||
|
||||
namespace latinime {
|
||||
|
||||
class GestureDecoderImpl : public IncrementalDecoder {
|
||||
|
||||
public:
|
||||
GestureDecoderImpl(int maxWordLength, int maxWords) :
|
||||
IncrementalDecoder(maxWordLength, maxWords) {
|
||||
}
|
||||
|
||||
int getSuggestions(ProximityInfo *pInfo, int *inputXs, int *inputYs, int *times,
|
||||
int *pointerIds, int *codes, int inputSize, int commitPoint, bool isMainDict,
|
||||
unsigned short *outWords, int *frequencies, int *outputIndices) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
private:
|
||||
DISALLOW_IMPLICIT_CONSTRUCTORS(GestureDecoderImpl);
|
||||
};
|
||||
} // namespace latinime
|
||||
|
||||
#endif // LATINIME_GESTURE_DECODER_IMPL_H
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef LATINIME_INCREMENTAL_DECODER_H
|
||||
#define LATINIME_INCREMENTAL_DECODER_H
|
||||
|
||||
#include "defines.h"
|
||||
#include "incremental_decoder_impl.h"
|
||||
|
||||
namespace latinime {
|
||||
|
||||
class IncrementalDecoder : public IncrementalDecoderImpl {
|
||||
|
||||
public:
|
||||
IncrementalDecoder(int maxWordLength, int maxWords) :
|
||||
IncrementalDecoderImpl(maxWordLength, maxWords) {
|
||||
}
|
||||
|
||||
private:
|
||||
DISALLOW_IMPLICIT_CONSTRUCTORS(IncrementalDecoder);
|
||||
};
|
||||
} // namespace latinime
|
||||
|
||||
#endif // LATINIME_INCREMENTAL_DECODER_H
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef LATINIME_INCREMENTAL_DECODER_IMPL_H
|
||||
#define LATINIME_INCREMENTAL_DECODER_IMPL_H
|
||||
|
||||
#include "bigram_dictionary.h"
|
||||
#include "defines.h"
|
||||
#include "incremental_decoder_interface.h"
|
||||
#include "unigram_dictionary.h"
|
||||
|
||||
namespace latinime {
|
||||
|
||||
class IncrementalDecoderImpl : IncrementalDecoderInterface {
|
||||
|
||||
public:
|
||||
IncrementalDecoderImpl(int maxWordLength, int maxWords) { };
|
||||
void setDict(const UnigramDictionary *dict, const BigramDictionary *bigram) { };
|
||||
void setPrevWord(const int32_t *prevWord, int prevWordLength) { };
|
||||
void reset() { };
|
||||
|
||||
private:
|
||||
DISALLOW_IMPLICIT_CONSTRUCTORS(IncrementalDecoderImpl);
|
||||
};
|
||||
} // namespace latinime
|
||||
|
||||
#endif // LATINIME_INCREMENTAL_DECODER_IMPL_H
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef LATINIME_INCREMENTAL_DECODER_INTERFACE_H
|
||||
#define LATINIME_INCREMENTAL_DECODER_INTERFACE_H
|
||||
|
||||
#include "bigram_dictionary.h"
|
||||
#include "defines.h"
|
||||
#include "proximity_info.h"
|
||||
#include "unigram_dictionary.h"
|
||||
|
||||
namespace latinime {
|
||||
|
||||
class IncrementalDecoderInterface {
|
||||
|
||||
public:
|
||||
virtual int getSuggestions(ProximityInfo *pInfo, int *inputXs, int *inputYs, int *times,
|
||||
int *pointerIds, int *codes, int inputSize, int commitPoint, bool isMainDict,
|
||||
unsigned short *outWords, int *frequencies, int *outputIndices) = 0;
|
||||
virtual void reset() = 0;
|
||||
virtual void setDict(const UnigramDictionary *dict, const BigramDictionary *bigram) = 0;
|
||||
virtual void setPrevWord(const int32_t *prevWord, int prevWordLength) = 0;
|
||||
virtual ~IncrementalDecoderInterface() { };
|
||||
};
|
||||
} // namespace latinime
|
||||
|
||||
#endif // LATINIME_INCREMENTAL_DECODER_INTERFACE_H
|
Loading…
Reference in New Issue