00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef JAVARECOGNISERWRAPPER_H
00026 #define JAVARECOGNISERWRAPPER_H
00027
00028
00029 #include "abstractrecogniser.h"
00030
00031
00032 class JavaRecogniserWrapper : public AbstractRecogniser {
00033
00034 public:
00035 JavaRecogniserWrapper( const QString& javaClassName,
00036 JavaVM* jvm,
00037 DigestDbModel* digestDbModel,
00038 QObject* parent = 0 );
00039
00040 virtual ~JavaRecogniserWrapper();
00041
00042 virtual QByteArray key() const;
00043 virtual QString title() const;
00044 virtual QString description() const;
00045
00046 QHash<QString, QVariant> defaultParams() const;
00047
00048 const QString& javaClassName() const;
00049
00050
00051 protected:
00052 virtual bool initTraining( const QList<QByteArray>& featureKeys,
00053 const QHash<QString, QVariant>& params );
00054 virtual bool examineSample( const FeatureVec& featureVec,
00055 const QSet<int>& classes );
00056 virtual bool finaliseTraining();
00057
00058 virtual bool writeModelFile( const QString& fileName );
00059 virtual bool readModelFile( const QString& fileName );
00060
00061 virtual Stroke flatten( const StrokeList& strokes );
00062 virtual ClassProbabilities classify( const FeatureVec& featureVec );
00063
00064 jmethodID tryGetMethodID( jclass cls, const char* name, const char* sig );
00065 QString jstringToQString( jstring jstr ) const;
00066
00067
00068 private:
00069 void cleanup();
00070
00071
00072 QString m_javaClassName;
00073
00074
00075
00076
00077 JNIEnv* m_env;
00078
00079
00080 jclass m_recog_cls;
00081 jobject m_recog_gref;
00082 jmethodID m_recog_constructor_mid;
00083 jmethodID m_recog_key_mid;
00084 jmethodID m_recog_title_mid;
00085 jmethodID m_recog_description_mid;
00086 jmethodID m_recog_initTraining_mid;
00087 jmethodID m_recog_examineSample_mid;
00088 jmethodID m_recog_finaliseTraining_mid;
00089 jmethodID m_recog_writeModelFile_mid;
00090 jmethodID m_recog_readModelFile_mid;
00091 jmethodID m_recog_flatten_mid;
00092 jmethodID m_recog_classify_mid;
00093
00094
00095 jclass m_vector_cls;
00096 jmethodID m_vector_constructor_mid;
00097 jmethodID m_vector_add_mid;
00098
00099
00100 jclass m_double_cls;
00101 jmethodID m_double_constructor_mid;
00102 };
00103
00104
00105 #endif // ! JAVARECOGNISERWRAPPER_H