diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKLipiEngineInterface.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKLipiEngineInterface.h index 86d06e83cb1bef9b0fe8280509db6b9f7112e42d..04d315b989a3e8208f4c907f6b3e4f1437e542f6 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKLipiEngineInterface.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKLipiEngineInterface.h @@ -52,6 +52,8 @@ public: virtual void setLipiRootPath(const string& appLipiPath)=0; + virtual void setLipiLibPath(const string& appLipiLibPath)=0; + virtual int setLipiLogFileName(const string& appLipiPath) = 0; virtual int setLipiLogLevel(const string& appLogLevel)=0; diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKMacros.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKMacros.h index 3be95ff59b091e6106dd0fa30f751bea7f3cb1a0..b9cc072db9071817e40e5e2e8e0906852f6884bb 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKMacros.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKMacros.h @@ -349,6 +349,11 @@ */ #define LIPIROOT_ENV_STRING "LIPI_ROOT" +/** +* @brief Defines the lipi library environment string used in LipiEngine.cfg +*/ +#define LIPILIB_ENV_STRING "LIPI_LIB" + /** * @brief Defines the type of project used in LipiEngine.cfg */ diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKOSUtil.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKOSUtil.h index 137f9a5a37f4ac72664bac26765e2bfeda7e8d58..88a56ac832a2fae6fe99371a573c3e0c022632c9 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKOSUtil.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKOSUtil.h @@ -69,11 +69,11 @@ public: // @} /** @brief Given library name, this function loads it into the adress space. - * @param lipiRoot + * @param lipiLibPath * @param sharedLibName : name of the library to be loaded * @param libHandle: pointer to the library handle */ - virtual int loadSharedLib(const string& lipiRoot, + virtual int loadSharedLib(const string& lipiLibPath, const string& sharedLibName, void** libHandle)=0; diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKTypes.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKTypes.h index 415c8a9aa261ff437e8af67de83447b4625b56d9..6c10ccc2980d2c477be9796417bc77cff29bc0b1 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKTypes.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/include/LTKTypes.h @@ -95,6 +95,7 @@ struct LTKControlInfo string cfgFileName; string cfgFilePath; string lipiRoot; + string lipiLib; string toolkitVersion; // constructor @@ -104,6 +105,7 @@ struct LTKControlInfo cfgFileName(""), cfgFilePath(""), lipiRoot(""), + lipiLib(""), toolkitVersion("") { } diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/lipiengine/LipiEngineModule.cpp b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/lipiengine/LipiEngineModule.cpp index e91436b6a0940280b231eb06440b3371f40e667e..f5a69788b898e5fdecd6f718f590b147eefb0088 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/lipiengine/LipiEngineModule.cpp +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/lipiengine/LipiEngineModule.cpp @@ -126,6 +126,10 @@ int LTKLipiEngineModule::initializeLipiEngine() { LTKReturnError(ELIPI_ROOT_PATH_NOT_SET); // PATH not set } + if(m_strLipiLibPath == "") + { + m_strLipiLibPath = m_strLipiRootPath + SEPARATOR + "lib"; + } temp = m_strLipiRootPath + SEPARATOR + "projects" + SEPARATOR + LIPIENGINE_CFG_STRING; @@ -273,6 +277,7 @@ int LTKLipiEngineModule::createShapeRecognizer(const string& strProjName, LTKControlInfo controlInfo; controlInfo.lipiRoot = m_strLipiRootPath; + controlInfo.lipiLib = m_strLipiLibPath; controlInfo.projectName = strProjectName; controlInfo.profileName = strProfileName; controlInfo.toolkitVersion = currentVersion; @@ -423,6 +428,7 @@ int LTKLipiEngineModule::createWordRecognizer(const string& strProjName, LTKControlInfo controlInfo; controlInfo.lipiRoot = m_strLipiRootPath; + controlInfo.lipiLib = m_strLipiLibPath; controlInfo.projectName = strProjectName; controlInfo.profileName = strProfileName; controlInfo.toolkitVersion = currentVersion; @@ -621,6 +627,28 @@ string LTKLipiEngineModule::getLipiRootPath() const return m_strLipiRootPath; } +/****************************************************************************** +* AUTHOR : +* DATE : +* NAME : getLipiLibPath +* DESCRIPTION : To fetch the value for the environment variable LIPI_LIB +* ARGUMENTS : None +* RETURNS : environment string on success & NULL on error +* NOTES : +* CHANGE HISTROY +* Author Date Description of change +******************************************************************************/ +string LTKLipiEngineModule::getLipiLibPath() const +{ + LOG(LTKLogger::LTK_LOGLEVEL_INFO)<< + "Entering: LTKLipiEngineModule::getLipiLibPath()"<<endl; + + LOG(LTKLogger::LTK_LOGLEVEL_INFO)<< + "Exiting: LTKLipiEngineModule::getLipiLibPath()"<<endl; + + return m_strLipiLibPath; +} + /****************************************************************************** * AUTHOR : Nidhi Sharma * DATE : 10-JAN-2007 @@ -647,6 +675,32 @@ void LTKLipiEngineModule::setLipiRootPath(const string& appLipiPath) } } +/****************************************************************************** +* AUTHOR : +* DATE : +* NAME : setLipiLibPath +* DESCRIPTION : To set the value of LIPI_LIB +* ARGUMENTS : String +* RETURNS : +* NOTES : +* CHANGE HISTROY +* Author Date Description of change +******************************************************************************/ +void LTKLipiEngineModule::setLipiLibPath(const string& appLipiLibPath) +{ + + //Dont LOG messages as this may be called before configureLogger() + + if ( appLipiLibPath.empty()) + { + m_strLipiLibPath = m_OSUtilPtr->getEnvVariable(LIPILIB_ENV_STRING); + } + else + { + m_strLipiLibPath = appLipiLibPath; + } +} + /****************************************************************************** * AUTHOR : Thanigai * DATE : 29-JUL-2005 @@ -1106,7 +1160,7 @@ int LTKLipiEngineModule::loadRecognizerDLL(const string& recognizerName, string recognizerDLLPath = ""; int returnVal = SUCCESS; - returnVal = m_OSUtilPtr->loadSharedLib(m_strLipiRootPath, recognizerName, dllHandler); + returnVal = m_OSUtilPtr->loadSharedLib(m_strLipiLibPath, recognizerName, dllHandler); if(returnVal != SUCCESS) @@ -1310,7 +1364,7 @@ int LTKLipiEngineModule::configureLogger() } } - LTKLoggerUtil::createLogger(m_strLipiRootPath); + LTKLoggerUtil::createLogger(m_strLipiLibPath); LTKLoggerUtil::configureLogger(m_logFileName, m_logLevel); return SUCCESS; diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/lipiengine/LipiEngineModule.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/lipiengine/LipiEngineModule.h index 302b03241bda2be54c11c16a7fb6254b8ac151a6..9ccffac3c42c8805c60695e00eaaf27579200e29 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/lipiengine/LipiEngineModule.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/lipiengine/LipiEngineModule.h @@ -99,6 +99,7 @@ private: string m_strLipiRootPath; // LIPI_ROOT environment path + string m_strLipiLibPath; // LIPI_LIB environment path string m_logFileName; @@ -127,10 +128,18 @@ public: */ string getLipiRootPath() const; + /** @brief Returns LTKLipiEngineModule::m_strLipiLibPath + */ + string getLipiLibPath() const; + /** @brief Sets the data member LTKLipiEngineModule::m_strLipiRootPath */ void setLipiRootPath(const string& appLipiPath=""); + /** @brief Sets the data member LTKLipiEngineModule::m_strLipiLibPath + */ + void setLipiLibPath(const string& appLipiLibPath=""); + /** @brief Returns LTKLipiEngineModule::m_logFileName */ string getLogFileName() const; diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/lipiplugin.pri b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/lipiplugin.pri index a94f03310692809b5dbef2e02a6c82075c7b7154..3dd51a221823f82d65522dc04ad7fb876ed73d2b 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/lipiplugin.pri +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/lipiplugin.pri @@ -5,6 +5,5 @@ CONFIG += plugin DESTDIR = $$MODULE_BASE_OUTDIR/plugins/lipi_toolkit -### This is a bad install location for arch-specific binaries. -target.path = $$[QT_INSTALL_DATA]/qtvirtualkeyboard/lipi_toolkit/lib +target.path = $$[QT_INSTALL_PLUGINS]/lipi_toolkit INSTALLS += target diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/ActiveDTWShapeRecognizer.cpp b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/ActiveDTWShapeRecognizer.cpp index 7a805b818c4b013ad6d21a169bf1a14a1408b796..247f5f983a83ff6b2b23acf7bb320c6c5c30cc49 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/ActiveDTWShapeRecognizer.cpp +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/ActiveDTWShapeRecognizer.cpp @@ -161,6 +161,7 @@ m_libHandlerFE(NULL) assignDefaultValues(); m_lipiRootPath = tmpControlInfo.lipiRoot; + m_lipiLibPath = tmpControlInfo.lipiLib; m_currentVersion = tmpControlInfo.toolkitVersion; strProjectName = tmpControlInfo.projectName; strProfileName = tmpControlInfo.profileName; @@ -4718,6 +4719,7 @@ int ActiveDTWShapeRecognizer::initializeFeatureExtractorInstance(const LTKContro LTKShapeFeatureExtractorFactory factory; int errorCode = factory.createFeatureExtractor(m_featureExtractorName, m_lipiRootPath, + m_lipiLibPath, &m_libHandlerFE, controlInfo, &m_ptrFeatureExtractor); @@ -5059,7 +5061,7 @@ int ActiveDTWShapeRecognizer::initializePreprocessor(const LTKControlInfo& contr // Load the DLL with path=preprocDLLPath void* functionHandle = NULL; - int returnVal = m_OSUtilPtr->loadSharedLib(controlInfo.lipiRoot, PREPROC, &m_libHandler); + int returnVal = m_OSUtilPtr->loadSharedLib(controlInfo.lipiLib, PREPROC, &m_libHandler); if(returnVal != SUCCESS) { diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/ActiveDTWShapeRecognizer.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/ActiveDTWShapeRecognizer.h index dc3ba171f33839b0a0dfa2dd9c44b53ba39f4d5e..9459d5c751f9fb8ec5f06334f45becc1a8576479 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/ActiveDTWShapeRecognizer.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/activedtw/ActiveDTWShapeRecognizer.h @@ -317,6 +317,13 @@ private: * </p> */ + string m_lipiLibPath; + /**< @brief Path of the Lipi Libraries + * <p> + * DEFAULT: LipiEngine::getLipiLibPath() + * </p> + */ + LTKShapeFeatureExtractor *m_ptrFeatureExtractor; /**< @brief Pointer to LTKShapeFeatureExtractor class * <p> diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/LTKShapeFeatureExtractorFactory.cpp b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/LTKShapeFeatureExtractorFactory.cpp index f1eaa446832a978351631c220ed963415ee9ce46..07fa2adcd5a332a5b5d8668b6ba96da3d78ee8f9 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/LTKShapeFeatureExtractorFactory.cpp +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/LTKShapeFeatureExtractorFactory.cpp @@ -76,7 +76,8 @@ LTKShapeFeatureExtractorFactory::LTKShapeFeatureExtractorFactory() int LTKShapeFeatureExtractorFactory::createFeatureExtractor( const string& featureExtractorName, const string& lipiRootPath, - void** m_libHandlerFE, + const string& lipiLibPath, + void** m_libHandlerFE, const LTKControlInfo& controlInfo, LTKShapeFeatureExtractor** outFeatureExtractor) { @@ -97,7 +98,7 @@ int LTKShapeFeatureExtractorFactory::createFeatureExtractor( LTKReturnError(errorCode); } - errorCode = getFeatureExtractorInst(lipiRootPath, feName, m_libHandlerFE, + errorCode = getFeatureExtractorInst(lipiRootPath, lipiLibPath, feName, m_libHandlerFE, controlInfo, outFeatureExtractor); if ( errorCode != SUCCESS) @@ -129,6 +130,7 @@ int LTKShapeFeatureExtractorFactory::createFeatureExtractor( *************************************************************************************/ int LTKShapeFeatureExtractorFactory::getFeatureExtractorInst( const string& lipiRootPath, + const string& lipiLibPath, const string& feName, void** m_libHandlerFE, const LTKControlInfo& controlInfo, @@ -139,7 +141,7 @@ int LTKShapeFeatureExtractorFactory::getFeatureExtractorInst( LTKOSUtil* utilPtr = LTKOSUtilFactory::getInstance(); - int returnVal = utilPtr->loadSharedLib(lipiRootPath, feName, m_libHandlerFE); + int returnVal = utilPtr->loadSharedLib(lipiLibPath, feName, m_libHandlerFE); if(returnVal != SUCCESS) diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/LTKShapeFeatureExtractorFactory.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/LTKShapeFeatureExtractorFactory.h index 6b7a48c11409b37e11d1d25071d6e4289a232d17..d178d6ef516f48661657cc02cd2489e5feb45b05 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/LTKShapeFeatureExtractorFactory.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/featureextractor/common/LTKShapeFeatureExtractorFactory.h @@ -73,11 +73,13 @@ public: int createFeatureExtractor(const string& featureExtractorType, const string& lipiRootPath, + const string& lipiLibPath, void** m_libHandlerFE, const LTKControlInfo& controlInfo, LTKShapeFeatureExtractor** outFeatureExtractor); int getFeatureExtractorInst(const string& lipiRootPath, + const string& lipiLibPath, const string& feName, void** m_libHandlerFE, const LTKControlInfo& controlInfo, diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/NeuralNetShapeRecognizer.cpp b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/NeuralNetShapeRecognizer.cpp index 52c0a16c6bd283ef255216a4c01a54c5826ae566..3c406f686ea50db9eb0c9a21e7a9803878b24ac5 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/NeuralNetShapeRecognizer.cpp +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/NeuralNetShapeRecognizer.cpp @@ -128,6 +128,7 @@ m_libHandlerFE(NULL) assignDefaultValues(); m_lipiRootPath = tmpControlInfo.lipiRoot; + m_lipiLibPath = tmpControlInfo.lipiLib; m_currentVersion = tmpControlInfo.toolkitVersion; strProjectName = tmpControlInfo.projectName; strProfileName = tmpControlInfo.profileName; @@ -1154,7 +1155,7 @@ int NeuralNetShapeRecognizer::initializePreprocessor(const LTKControlInfo& contr // Load the DLL with path=preprocDLLPath void* functionHandle = NULL; - int returnVal = m_OSUtilPtr->loadSharedLib(controlInfo.lipiRoot, PREPROC, &m_libHandler); + int returnVal = m_OSUtilPtr->loadSharedLib(controlInfo.lipiLib, PREPROC, &m_libHandler); if(returnVal != SUCCESS) @@ -1291,6 +1292,7 @@ int NeuralNetShapeRecognizer::initializeFeatureExtractorInstance(const LTKContro LTKShapeFeatureExtractorFactory factory; int errorCode = factory.createFeatureExtractor(m_featureExtractorName, m_lipiRootPath, + m_lipiLibPath, &m_libHandlerFE, controlInfo, &m_ptrFeatureExtractor); diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/NeuralNetShapeRecognizer.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/NeuralNetShapeRecognizer.h index 067b3d4c9552066067259754452ead9d40781473..6e32002aad1f1676a2b88acc75723b35332cfcf4 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/NeuralNetShapeRecognizer.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/neuralnet/NeuralNetShapeRecognizer.h @@ -123,6 +123,13 @@ class NeuralNetShapeRecognizer: public LTKShapeRecognizer * </p> */ + string m_lipiLibPath; + /**< @brief Path of the Lipi Libraries + * <p> + * DEFAULT: LipiEngine::getLipiPath() + * </p> + */ + LTKShapeFeatureExtractor *m_ptrFeatureExtractor; /**< @brief Pointer to LTKShapeFeatureExtractor class * <p> diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/nn/NNShapeRecognizer.cpp b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/nn/NNShapeRecognizer.cpp index db5b6a1f8e17fcf148625db2460ec6006ed1d859..78b09e475c66a4420adff68301b31c356ce082e4 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/nn/NNShapeRecognizer.cpp +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/nn/NNShapeRecognizer.cpp @@ -169,6 +169,7 @@ m_libHandlerFE(NULL) assignDefaultValues(); m_lipiRootPath = tmpControlInfo.lipiRoot; + m_lipiLibPath = tmpControlInfo.lipiLib; m_currentVersion = tmpControlInfo.toolkitVersion; strProjectName = tmpControlInfo.projectName; strProfileName = tmpControlInfo.profileName; @@ -3281,6 +3282,7 @@ int NNShapeRecognizer::initializeFeatureExtractorInstance(const LTKControlInfo& LTKShapeFeatureExtractorFactory factory; int errorCode = factory.createFeatureExtractor(m_featureExtractorName, m_lipiRootPath, + m_lipiLibPath, &m_libHandlerFE, controlInfo, &m_ptrFeatureExtractor); @@ -4223,7 +4225,7 @@ int NNShapeRecognizer::initializePreprocessor(const LTKControlInfo& controlInfo, // Load the DLL with path=preprocDLLPath void* functionHandle = NULL; - int returnVal = m_OSUtilPtr->loadSharedLib(controlInfo.lipiRoot, PREPROC, &m_libHandler); + int returnVal = m_OSUtilPtr->loadSharedLib(controlInfo.lipiLib, PREPROC, &m_libHandler); if(returnVal != SUCCESS) diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/nn/NNShapeRecognizer.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/nn/NNShapeRecognizer.h index 60b9b857817a7728edc25b02e4cb23312235a69c..cce1baf02282f0a00d65e6c6e0d4be44e435a6c3 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/nn/NNShapeRecognizer.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/shaperec/nn/NNShapeRecognizer.h @@ -249,6 +249,13 @@ class NNShapeRecognizer: public LTKShapeRecognizer * </p> */ + string m_lipiLibPath; + /**< @brief Path of the Lipi Libraries + * <p> + * DEFAULT: LipiEngine::getLipiLibPath() + * </p> + */ + LTKShapeFeatureExtractor *m_ptrFeatureExtractor; /**< @brief Pointer to LTKShapeFeatureExtractor class * <p> diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/BoxFieldRecognizer.cpp b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/BoxFieldRecognizer.cpp index ed40a84840a56e46b536b44cd702b68d737de98b..dbcdca580b833f3ce6faf8d1c2f59e8fae4ca054 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/BoxFieldRecognizer.cpp +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/BoxFieldRecognizer.cpp @@ -89,6 +89,7 @@ m_numTracesProcessed(0), m_boxedShapeProject(""), m_boxedShapeProfile(""), m_lipiRoot(""), +m_lipiLib(""), m_boxedConfigFile(""), m_logFile(""), m_logLevel(LTKLogger::LTK_LOGLEVEL_ERR), @@ -124,6 +125,7 @@ m_OSUtilPtr(LTKOSUtilFactory::getInstance()) // initialize the data members m_lipiRoot = tempControlInfo.lipiRoot; + m_lipiLib = tempControlInfo.lipiLib; m_toolkitVersion = tempControlInfo.toolkitVersion; @@ -1182,7 +1184,7 @@ int BoxedFieldRecognizer::updateRecognitionResults(const vector<LTKShapeRecoResu } m_hAlgoDLLHandle = NULL; - errorCode = m_OSUtilPtr->loadSharedLib(m_lipiRoot, recognizerName, &m_hAlgoDLLHandle); + errorCode = m_OSUtilPtr->loadSharedLib(m_lipiLib, recognizerName, &m_hAlgoDLLHandle); // Unable to load dll if(errorCode != SUCCESS) @@ -1222,6 +1224,7 @@ int BoxedFieldRecognizer::updateRecognitionResults(const vector<LTKShapeRecoResu controlInfo.projectName = strProjectName; controlInfo.profileName = strLocalProfileName; controlInfo.lipiRoot = m_lipiRoot; + controlInfo.lipiLib = m_lipiLib; controlInfo.toolkitVersion = m_toolkitVersion; *outShapeRecPtr = NULL; diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/BoxFieldRecognizer.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/BoxFieldRecognizer.h index d1ccb49688f31319eb68e532f3968dfe844f2246..e0703b5add4ced4c5a514e492bb229a40ff74e47 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/BoxFieldRecognizer.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/reco/wordrec/boxfld/BoxFieldRecognizer.h @@ -72,6 +72,9 @@ private: /** Lipi root */ string m_lipiRoot; + /** Lipi libraries */ + string m_lipiLib; + /** Isolated shape recognizer project used for recognizing each box */ string m_boxedShapeProject; diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLinuxUtil.cpp b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLinuxUtil.cpp index 99e5fac063fa39ea605b6fb7ff684efa1c4d0a44..f7f85702f5e7677eebdf0877072dd66a44741850 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLinuxUtil.cpp +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLinuxUtil.cpp @@ -94,7 +94,7 @@ LTKLinuxUtil::~LTKLinuxUtil() * CHANGE HISTROY * Author Date Description ***************************************************************************/ -int LTKLinuxUtil::loadSharedLib(const string & lipiRoot, +int LTKLinuxUtil::loadSharedLib(const string & lipiLibPath, const string & sharedLibName, void * * libHandle) { @@ -103,7 +103,7 @@ int LTKLinuxUtil::loadSharedLib(const string & lipiRoot, string sharedLibraryPath = ""; // construct the path for the recogniser DLL - sharedLibraryPath = lipiRoot + "/" + "lib" + "/" + "lib" + sharedLibName + ".so"; + sharedLibraryPath = lipiLibPath + "/" + "lib" + sharedLibName + ".so"; // Load the DLL *libHandle = dlopen(sharedLibraryPath.c_str(), RTLD_LAZY); diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLinuxUtil.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLinuxUtil.h index 074db044972008b5894559dd356dfc94baedb4cd..d8eef6f29bfafe3b8c3fdea5c529ce09046394da 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLinuxUtil.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLinuxUtil.h @@ -72,7 +72,7 @@ public: ~LTKLinuxUtil(); // @} - int loadSharedLib(const string& lipiRoot, + int loadSharedLib(const string& lipiLibPath, const string& sharedLibName, void** libHandle); diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLoggerUtil.cpp b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLoggerUtil.cpp index c89ffe47e1e124a98224808da6e253ed75d1a74d..1971a69dcc1415791d134a742f54d3be8c17088c 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLoggerUtil.cpp +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLoggerUtil.cpp @@ -93,12 +93,12 @@ LTKLoggerUtil::LTKLoggerUtil(){} * Author Date Description of change ****************************************************************************/ -int LTKLoggerUtil::createLogger(const string& lipiRoot) +int LTKLoggerUtil::createLogger(const string& lipiLibPath) { void* functionHandle = NULL; auto_ptr<LTKOSUtil> a_ptrOSUtil(LTKOSUtilFactory::getInstance()); - int iErrorCode = a_ptrOSUtil->loadSharedLib(lipiRoot, + int iErrorCode = a_ptrOSUtil->loadSharedLib(lipiLibPath, LOGGER_MODULE_STR, &m_libHandleLogger); diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLoggerUtil.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLoggerUtil.h index 3252d14a50a6d4a2f45e218177b0db798be25977..2f09831bd5d799a3d105c67955e660b16b8c8933 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLoggerUtil.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKLoggerUtil.h @@ -100,7 +100,7 @@ public: * @return SUCCESS on successful split operation */ - static int createLogger(const string& lipiRoot); + static int createLogger(const string& lipiLibPath); static int destroyLogger(); diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKWinCEUtil.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKWinCEUtil.h index cdc761b32a1d4a2edceabd08446570acc7ce8e05..649a2700a1e2f591469511a7ca95a2480f816d14 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKWinCEUtil.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKWinCEUtil.h @@ -74,7 +74,7 @@ public: ~LTKWinCEUtil(); // @} - int loadSharedLib(const string& lipiRoot, + int loadSharedLib(const string& lipiLibPath, const string& sharedLibName, void** libHandle); diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKWindowsUtil.cpp b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKWindowsUtil.cpp index 0b72bd5122241896bf8c468827a548cd6c4c2a10..825ee84c4722706489b2aebd19f4326b4a1e3738 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKWindowsUtil.cpp +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKWindowsUtil.cpp @@ -90,14 +90,14 @@ LTKWindowsUtil::~LTKWindowsUtil() * CHANGE HISTROY * Author Date Description ***************************************************************************/ -int LTKWindowsUtil::loadSharedLib(const string & lipiRoot, +int LTKWindowsUtil::loadSharedLib(const string & lipiLibPath, const string & sharedLibName, void * * libHandle) { string sharedLibraryPath = ""; // construct the path for the recogniser DLL - sharedLibraryPath = lipiRoot + "\\" + "lib" + "\\" + sharedLibName + + sharedLibraryPath = lipiLibPath + "\\" + sharedLibName + #ifndef NDEBUG "d" #endif diff --git a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKWindowsUtil.h b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKWindowsUtil.h index 755fc39040e1b1b160754e9cfd16d9e91afdff47..d62350d93e61eae53c85ea9b4bcb73d7243194e4 100644 --- a/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKWindowsUtil.h +++ b/src/virtualkeyboard/3rdparty/lipi-toolkit/src/util/lib/LTKWindowsUtil.h @@ -74,7 +74,7 @@ public: ~LTKWindowsUtil(); // @} - int loadSharedLib(const string& lipiRoot, + int loadSharedLib(const string& lipiLibPath, const string& sharedLibName, void** libHandle); diff --git a/src/virtualkeyboard/lipisharedrecognizer.cpp b/src/virtualkeyboard/lipisharedrecognizer.cpp index ab93a343dc5f4fe673c76eef3f6748e8f0b9c631..e75042f8ee0ae12256ea155a3187db89ee0cce4d 100644 --- a/src/virtualkeyboard/lipisharedrecognizer.cpp +++ b/src/virtualkeyboard/lipisharedrecognizer.cpp @@ -42,6 +42,7 @@ namespace QtVirtualKeyboard { int LipiSharedRecognizer::s_lipiEngineRefCount = 0; QString LipiSharedRecognizer::s_lipiRoot; +QString LipiSharedRecognizer::s_lipiLib; void *LipiSharedRecognizer::s_lipiEngineHandle = 0; LipiSharedRecognizer::FN_PTR_CREATELTKLIPIENGINE LipiSharedRecognizer::s_createLTKLipiEngine = 0; LipiSharedRecognizer::FN_PTR_DELETELTKLIPIENGINE LipiSharedRecognizer::s_deleteLTKLipiEngine = 0; @@ -173,18 +174,31 @@ int LipiSharedRecognizer::loadLipiInterface() if (++s_lipiEngineRefCount == 1) { if (s_lipiRoot.isEmpty()) { - if (qEnvironmentVariableIsEmpty("LIPI_ROOT")) { - s_lipiRoot = QDir(QLibraryInfo::location(QLibraryInfo::DataPath) + "/qtvirtualkeyboard/lipi_toolkit").absolutePath(); - qputenv("LIPI_ROOT", s_lipiRoot.toLatin1()); - } else { - s_lipiRoot = qgetenv("LIPI_ROOT"); - } + /* LIPI_ROOT defines the root directory for lipi-toolkit project. + LIPI_LIB is an extension implemented for QtVirtualKeyboard and + allows using different location for lipi-toolkit plugins. + + LIPI_LIB defaults to LIPI_ROOT + "/lib". + */ + bool lipiRootVarIsEmpty = qEnvironmentVariableIsEmpty("LIPI_ROOT"); + s_lipiRoot = lipiRootVarIsEmpty ? + QDir(QLibraryInfo::location(QLibraryInfo::DataPath) + "/qtvirtualkeyboard/lipi_toolkit").absolutePath() : + qgetenv("LIPI_ROOT"); + + bool lipiLibVarIsEmpty = qEnvironmentVariableIsEmpty("LIPI_LIB"); + if (!lipiLibVarIsEmpty) + s_lipiLib = qgetenv("LIPI_LIB"); + else if (!lipiRootVarIsEmpty) + s_lipiLib = s_lipiRoot + "/lib"; + else + s_lipiLib = QDir(QLibraryInfo::location(QLibraryInfo::PluginsPath) + "/lipi_toolkit").absolutePath(); } QScopedPointer<LTKOSUtil> osUtil(LTKOSUtilFactory::getInstance()); const string lipiRootPath(QDir::toNativeSeparators(s_lipiRoot).toStdString()); + const string lipiLibPath(QDir::toNativeSeparators(s_lipiLib).toStdString()); - int result = osUtil->loadSharedLib(lipiRootPath, LIPIENGINE_MODULE_STR, &s_lipiEngineHandle); + int result = osUtil->loadSharedLib(lipiLibPath, LIPIENGINE_MODULE_STR, &s_lipiEngineHandle); if (result != SUCCESS) { qWarning() << QString("Error %1: Could not open shared library for module '%2'").arg(result).arg(LIPIENGINE_MODULE_STR); return result; @@ -208,6 +222,7 @@ int LipiSharedRecognizer::loadLipiInterface() s_lipiEngine = s_createLTKLipiEngine(); s_lipiEngine->setLipiRootPath(lipiRootPath); + s_lipiEngine->setLipiLibPath(lipiLibPath); #if 0 s_lipiEngine->setLipiLogFileName(QDir::toNativeSeparators(QString("%1/lipi.log").arg(s_lipiRoot)).toStdString()); s_lipiEngine->setLipiLogLevel("DEBUG"); diff --git a/src/virtualkeyboard/lipisharedrecognizer.h b/src/virtualkeyboard/lipisharedrecognizer.h index e43c8163b171e6cce806755fc5e396edd57330fa..c82b8f42efad507aacaaed14750e6e05fc1c31e1 100644 --- a/src/virtualkeyboard/lipisharedrecognizer.h +++ b/src/virtualkeyboard/lipisharedrecognizer.h @@ -66,6 +66,7 @@ private: static int s_lipiEngineRefCount; static QString s_lipiRoot; + static QString s_lipiLib; static void *s_lipiEngineHandle; static FN_PTR_CREATELTKLIPIENGINE s_createLTKLipiEngine; static FN_PTR_DELETELTKLIPIENGINE s_deleteLTKLipiEngine;