Load issue fixed. arengine updated 0.99m.
authorKyusung Cho <ks0128.cho@samsung.com>
Tue, 9 Apr 2013 13:04:25 +0000 (22:04 +0900)
committerKyusung Cho <ks0128.cho@samsung.com>
Tue, 9 Apr 2013 13:04:25 +0000 (22:04 +0900)
Change-Id: I1acaabc6d2650c44042a9937676a42911c9fc69f
Signed-off-by: Kyusung Cho <ks0128.cho@samsung.com>
12 files changed:
inc/FUixVisionImageFeatureManager.h
lib/armv7-a/libarengine.so
lib/x86/libarengine.so
src/FUixVisionImageFeatureInfo.cpp
src/FUixVisionImageFeatureManager.cpp
src/FUixVisionQrCodeGenerator.cpp
src/FUixVision_ImageFeatureInfoImpl.cpp
src/FUixVision_ImageFeatureManagerImpl.cpp
src/FUixVision_QrCodeObjectImpl.cpp
src/FUixVision_QrCodeRecognizerImpl.cpp
src/ImageRecognitionInfo.h [changed mode: 0755->0644]
src/ImageRecognizer.h [changed mode: 0755->0644]

index ed105be..2036db3 100644 (file)
@@ -54,6 +54,7 @@ namespace Tizen { namespace Uix { namespace Vision
  *     imageFeatureManager.AddFeature("/opt/usr/media/Images/image3.jpg");
  *     imageFeatureManager.Flush();
  * }
+ * @endcode
  */
 class _OSP_EXPORT_ ImageFeatureManager
     : public Tizen::Base::Object
index f290373..61ffcee 100755 (executable)
Binary files a/lib/armv7-a/libarengine.so and b/lib/armv7-a/libarengine.so differ
index f5ec076..8c631db 100755 (executable)
Binary files a/lib/x86/libarengine.so and b/lib/x86/libarengine.so differ
index 8f6e5bb..4468b2c 100644 (file)
@@ -42,6 +42,8 @@ ImageFeatureInfo::~ImageFeatureInfo()
 Tizen::Base::String
 ImageFeatureInfo::GetDescription() const
 {
+    ClearLastResult();
+
     char ch;
     int length = -1;
 
@@ -52,13 +54,13 @@ ImageFeatureInfo::GetDescription() const
         return Tizen::Base::String("");
     }
 
-    char* pName = new char[length + 1];
+    std::unique_ptr<char[]> pName(new (std::nothrow) char[length + 1]);
+    SysTryReturn(NID_UIX, pName != null, Tizen::Base::String(""), E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY))
 
     //set data to char pointer, with allocated memory
-    __pImageFeatureInfoImpl->GetDescription(pName, length + 1);
+    __pImageFeatureInfoImpl->GetDescription(pName.get(), length + 1);
 
-    Tizen::Base::String description(pName);
-    delete[] pName;
+    Tizen::Base::String description(pName.get());
     return description;
 }
 
@@ -78,28 +80,21 @@ Tizen::Base::ByteBuffer*
 ImageFeatureInfo::GetThumbnailN(void) const
 {
     int bufWidth  = __pImageFeatureInfoImpl->GetThumbnailWidth();
+    SysTryReturn(NID_UIX, bufWidth > 0, null, E_FAILURE, "[%s] Failed to get thumbnail width.", GetErrorMessage(E_FAILURE));
+
     int bufHeight = __pImageFeatureInfoImpl->GetThumbnailHeight();
+    SysTryReturn(NID_UIX, bufHeight > 0, null, E_FAILURE, "[%s] Failed to get thumbnail height.", GetErrorMessage(E_FAILURE));
 
-    while ((bufWidth > 0) && (bufHeight > 0))
-    {
-        result res = E_FAILURE;
-        Tizen::Base::ByteBuffer* outBuffer = new Tizen::Base::ByteBuffer();
-        if (outBuffer == null)
-        {
-            break;
-        }
-        res = outBuffer->Construct(bufWidth * bufHeight);
-        if (IsFailed(res))
-        {
-            break;
-        }
-        if (__pImageFeatureInfoImpl->GetThumbnail((char*)outBuffer->GetPointer(), bufWidth, bufHeight, false))
-        {
-            return outBuffer;
-        }
-        break;
-    }
-    return null;
+    std::unique_ptr<Tizen::Base::ByteBuffer> pOutBuffer(new (std::nothrow) Tizen::Base::ByteBuffer());
+    SysTryReturn(NID_UIX, pOutBuffer != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+    result res = pOutBuffer->Construct(bufWidth * bufHeight);
+    SysTryReturn(NID_UIX, res == E_SUCCESS, null, res, "[%s] Failed to construct ByteBuffer.", GetErrorMessage(res));
+
+    bool success = __pImageFeatureInfoImpl->GetThumbnail((char*)pOutBuffer->GetPointer(), bufWidth, bufHeight, false);
+    SysTryReturn(NID_UIX, success == true, null, E_FAILURE, "[%s] Failed to get thumbnail.", GetErrorMessage(E_FAILURE));
+
+    return pOutBuffer.release();
 }
 
 bool
index 072ce4b..5aeae73 100755 (executable)
@@ -103,9 +103,20 @@ ImageFeatureManager::AddFeature(const Tizen::Base::String& imagePath)
 {
     SysAssertf(__pImageFeatureManagerImpl != null, "Not yet constructed! Consruct() should be called before use.");
 
-    SysTryReturnResult(NID_UIX, !imagePath.IsEmpty(), E_INVALID_ARG,
+    SysTryReturn(NID_UIX, !imagePath.IsEmpty(), -1, E_INVALID_ARG,
             "image path must not be empty. [E_INVALID_ARG]");
 
+    SysTryReturn(NID_UIX, Tizen::Io::File::IsFileExist(imagePath), -1, E_INVALID_ARG,
+                "image path must exist. [E_INVALID_ARG]");
+
+       Tizen::Io::FileAttributes _fileAtt;
+
+       SysTryReturn(NID_UIX, Tizen::Io::File::GetAttributes(imagePath, _fileAtt) == E_SUCCESS, -1, E_INVALID_ARG,
+                       "image file must have attributes. [E_INVALID_ARG]");
+
+       SysTryReturn(NID_UIX, !_fileAtt.IsDirectory(), -1, E_INVALID_ARG,
+                       "image file must exist. [E_INVALID_ARG]");
+
     return (int) __pImageFeatureManagerImpl->AddFeature(imagePath);
 }
 
@@ -114,7 +125,7 @@ ImageFeatureManager::Flush(const Tizen::Base::String* featureSetFilePath)
 {
     SysAssertf(__pImageFeatureManagerImpl != null, "Not yet constructed! Consruct() should be called before use.");
 
-    return __pImageFeatureManagerImpl->SaveDB(true, featureSetFilePath);
+        return __pImageFeatureManagerImpl->SaveDB(true, featureSetFilePath);
 }
 
 result
@@ -126,6 +137,14 @@ ImageFeatureManager::Load(const Tizen::Base::String& featureSetFilePath)
             "feature set path must not be empty. [E_INVALID_ARG]");
 
     SysTryReturnResult(NID_UIX, Tizen::Io::File::IsFileExist(featureSetFilePath), E_INVALID_ARG,
+            "feature set path must exist. [E_INVALID_ARG]");
+
+       Tizen::Io::FileAttributes _fileAtt;
+
+    SysTryReturnResult(NID_UIX, Tizen::Io::File::GetAttributes(featureSetFilePath, _fileAtt) == E_SUCCESS, E_INVALID_ARG,
+            "feature set file must have attributes. [E_INVALID_ARG]");
+
+    SysTryReturnResult(NID_UIX, !_fileAtt.IsDirectory(), E_INVALID_ARG,
             "feature set file must exist. [E_INVALID_ARG]");
 
     return __pImageFeatureManagerImpl->OpenDB(featureSetFilePath) ? E_SUCCESS : E_FAILURE;
@@ -134,11 +153,13 @@ ImageFeatureManager::Load(const Tizen::Base::String& featureSetFilePath)
 Tizen::Base::Collection::IListT<Tizen::Media::ImageFormat>*
 ImageFeatureManager::GetSupportedImageFileFormatsListN(void)
 {
-    Tizen::Base::Collection::ArrayListT<Tizen::Media::ImageFormat>* formatList = new Tizen::Base::Collection::ArrayListT<Tizen::Media::ImageFormat>;
-    formatList->Add(Tizen::Media::IMG_FORMAT_BMP);
-    formatList->Add(Tizen::Media::IMG_FORMAT_JPG);
-    formatList->Add(Tizen::Media::IMG_FORMAT_PNG);
-    return formatList;
+    std::unique_ptr<Tizen::Base::Collection::ArrayListT<Tizen::Media::ImageFormat> > pFormatList(new (std::nothrow) Tizen::Base::Collection::ArrayListT<Tizen::Media::ImageFormat>);
+    SysTryReturn(NID_UIX, pFormatList != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+    pFormatList->Add(Tizen::Media::IMG_FORMAT_BMP);
+    pFormatList->Add(Tizen::Media::IMG_FORMAT_JPG);
+    pFormatList->Add(Tizen::Media::IMG_FORMAT_PNG);
+    return pFormatList.release();
 }
 
 const Tizen::Uix::Vision::ImageFeatureInfo*
index 189e35c..0916036 100644 (file)
@@ -60,18 +60,20 @@ QrCodeGenerator::EncodeToBufferN(const Tizen::Base::String& message, QrCodeMode
 
     Tizen::Text::Utf8Encoding utf8;
     __pQrCodeGeneratorImpl->Encode((char*) utf8.GetBytesN(message)->GetPointer(), mode, error_level, compatibility);
+
     __pQrCodeGeneratorImpl->GetSize(width, height);
 
-    Tizen::Base::ByteBuffer* buffer = new Tizen::Base::ByteBuffer;
-    buffer->Construct(width * height);
+    std::unique_ptr<Tizen::Base::ByteBuffer> pBuffer(new (std::nothrow) Tizen::Base::ByteBuffer());
+    SysTryReturn(NID_UIX, pBuffer != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+    pBuffer->Construct(width * height);
 
-    if (__pQrCodeGeneratorImpl->SaveToBuffer((unsigned char*) buffer->GetPointer()))
+    if (__pQrCodeGeneratorImpl->SaveToBuffer((unsigned char*) pBuffer->GetPointer()))
     {
-        return buffer;
+        return pBuffer.release();
     }
     else
     {
-        delete buffer;
         return null;
     }
 
@@ -100,11 +102,15 @@ QrCodeGenerator::EncodeToFile(const Tizen::Base::String& message, QrCodeMode mod
 Tizen::Base::Collection::IListT<Tizen::Media::ImageFormat>*
 QrCodeGenerator::GetSupportedImageFileFormatsListN(void)
 {
-    Tizen::Base::Collection::ArrayListT<Tizen::Media::ImageFormat>* formatList = new Tizen::Base::Collection::ArrayListT<Tizen::Media::ImageFormat>;
-    formatList->Add(Tizen::Media::IMG_FORMAT_BMP);
-    formatList->Add(Tizen::Media::IMG_FORMAT_JPG);
-    formatList->Add(Tizen::Media::IMG_FORMAT_PNG);
-    return formatList;
+    std::unique_ptr<Tizen::Base::Collection::ArrayListT<Tizen::Media::ImageFormat> > pFormatList(
+            new (std::nothrow) Tizen::Base::Collection::ArrayListT<Tizen::Media::ImageFormat>);
+    SysTryReturn(NID_UIX, pFormatList != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+
+    pFormatList->Add(Tizen::Media::IMG_FORMAT_BMP);
+    pFormatList->Add(Tizen::Media::IMG_FORMAT_JPG);
+    pFormatList->Add(Tizen::Media::IMG_FORMAT_PNG);
+    return pFormatList.release();
 }
 
 } } } //Tizen::Uix::Vision
index 73b2dd0..48369e7 100644 (file)
@@ -72,38 +72,6 @@ bool
 _ImageFeatureInfoImpl::GetThumbnail(char* outBuffer, int bufWidth, int bufHeight, bool fit) const
 {
     return __imageFeatureDatabaseInfo.getThumbnailImage(outBuffer, bufWidth, bufHeight, fit);
-
-    //Code for using in next arengine version
-    /*
-    char* tempBuffer = new char[bufWidth * bufHeight * 4];
-    bool res = __imageFeatureDatabaseInfo.getThumbnailImage(tempBuffer, bufWidth, bufHeight, fit);
-
-    if(!res)
-    {
-        delete[] tempBuffer;
-        return false;
-    }
-
-    Tizen::Media::ImageBuffer imBuf;
-    result r = imBuf.Construct(bufWidth, bufHeight, Tizen::Media::MEDIA_PIXEL_FORMAT_BGRA8888, (byte*)tempBuffer, bufWidth * bufHeight * 4);
-    delete[] tempBuffer;
-    if(IsFailed(r))
-    {
-        return false;
-    }
-
-    Tizen::Base::ByteBuffer* yuvBuf = imBuf.GetByteBufferN(Tizen::Media::MEDIA_PIXEL_FORMAT_YUV420P);
-    if(yuvBuf == null)
-    {
-        return false;
-    }
-
-    memcpy(outBuffer, yuvBuf->GetPointer(), bufWidth * bufHeight);
-    delete yuvBuf;
-
-    return true;
- */
-
 }
 
 Tizen::Uix::Vision::ImageFeatureInfo*
index 0f212d1..87d137b 100644 (file)
@@ -27,7 +27,7 @@ namespace Tizen { namespace Uix { namespace Vision
 
 _ImageFeatureManagerImpl::_ImageFeatureManagerImpl(void)
     : __imageFeatureManager(0)
-       , __readOnly(false)
+    , __readOnly(false)
 {
 }
 
@@ -89,9 +89,9 @@ int
 _ImageFeatureManagerImpl::AddFeature(const unsigned char* data, int width, int height, const Tizen::Base::String& info)
 {
     if (!__imageFeatureManager)
-       {
+    {
         return -1;
-       }
+    }
     Tizen::Text::Utf8Encoding utf8;
     int index = (int) __imageFeatureManager->addImageToDB(data, width, height, (char*) utf8.GetBytesN(info)->GetPointer());
 
@@ -107,17 +107,25 @@ bool
 _ImageFeatureManagerImpl::DeleteFeature(int index)
 {
     if (!__imageFeatureManager)
-       {
+    {
         return false;
-       }
+    }
 
-    int realIndex(0);
-    __indices.GetAt(index,realIndex);
-    if (__imageFeatureManager->deleteImageFromDB(realIndex))
+    if (index < __indices.GetCount() && index >= 0)
     {
-        __indices.RemoveAt(index);
-        return true;
+        int realIndex(0);
+        __indices.GetAt(index, realIndex);
+        if (__imageFeatureManager->deleteImageFromDB(realIndex))
+        {
+            __indices.RemoveAt(index);
+            return true;
+        }
     }
+    else
+    {
+        SetLastResult(E_INVALID_ARG);
+    }
+    
     return false;
 }
 
@@ -139,9 +147,9 @@ _ImageFeatureManagerImpl::SaveDB(bool optimizeDatabase, const Tizen::Base::Strin
     result result = E_FAILURE;
 
     if (!__imageFeatureManager)
-       {
+    {
         return E_FAILURE;
-       }
+    }
 
 
     if (null != dbPath)
@@ -157,14 +165,15 @@ _ImageFeatureManagerImpl::SaveDB(bool optimizeDatabase, const Tizen::Base::Strin
         {
             Tizen::Text::Utf8Encoding utf8;
             result = __imageFeatureManager->saveDB(optimizeDatabase, (const char*) utf8.GetBytesN(__path)->GetPointer()) ? E_SUCCESS : E_FAILURE;
-                       if (E_FAILURE == result && __readOnly)
-                       {
-                               result = E_INVALID_ARG;
-                       }
+            if (E_FAILURE == result && __readOnly)
+            {
+                result = E_INVALID_ARG;
+            }
         }
     }
 
     return result;
+
 }
 
 bool
@@ -194,21 +203,20 @@ _ImageFeatureManagerImpl::OpenDB(const Tizen::Base::String& dbpath)
     __imageFeatureManager->initDB();
 
     Tizen::Text::Utf8Encoding utf8;
-       switch (__imageFeatureManager->openDB((const char*) utf8.GetBytesN(dbpath)->GetPointer()))
-       {
-       case 0: //ok
-        __path = dbpath;
-        UpdateFeatureIndices();
-               break;
-       case -2: //read only feature set file
+    switch (__imageFeatureManager->openDB((const char*) utf8.GetBytesN(dbpath)->GetPointer()))
+    {
+    case 0: //ok
         __path = dbpath;
         UpdateFeatureIndices();
-               __readOnly = true;
-               break;
-       default: //error
+        break;
+    case -2: //read only feature set file
         __path = dbpath;
         UpdateFeatureIndices();
-       }
+        __readOnly = true;
+        break;
+    default: //error
+        return false;
+    }
 
     return true;
 }
@@ -217,9 +225,9 @@ void
 _ImageFeatureManagerImpl::ReleaseDB(void)
 {
     if (!__imageFeatureManager)
-       {
+    {
         return;
-       }
+    }
 
     __imageFeatureManager->releaseDB();
     __indices.RemoveAll();
@@ -229,15 +237,23 @@ const Tizen::Uix::Vision::ImageFeatureInfo*
 _ImageFeatureManagerImpl::GetImageFeatureInfo(int index)
 {
     if (!__imageFeatureManager)
-       {
+    {
         return null;
-       }
+    }
 
-    Tizen::Uix::Vision::ImageFeatureInfo* di = _ImageFeatureInfoImpl::CreateImageFeatureInfoN();
-    int realIndex(0);
-    __indices.GetAt(index, realIndex);
-    _ImageFeatureInfoImpl::GetInstance(di)->SetSariPointer(sari2::ImageFeatureInfo(__imageFeatureManager, realIndex));
-    return di;
+    if (index < __indices.GetCount() && index >= 0)
+    {
+        Tizen::Uix::Vision::ImageFeatureInfo* di = _ImageFeatureInfoImpl::CreateImageFeatureInfoN();
+        int realIndex(0);
+        __indices.GetAt(index, realIndex);
+        _ImageFeatureInfoImpl::GetInstance(di)->SetSariPointer(sari2::ImageFeatureInfo(__imageFeatureManager, realIndex));
+        return di;
+    }
+    else
+    {
+        SetLastResult(E_INVALID_ARG);
+        return null;
+    }
 }
 
 void
@@ -246,9 +262,9 @@ _ImageFeatureManagerImpl::UpdateFeatureIndices(void)
     __indices.RemoveAll();
 
     if (!__imageFeatureManager)
-       {
+    {
         return;
-       }
+    }
 
     int total = __imageFeatureManager->totalNumberOfImages();
     for (int i = 0; i < total; i++)
index cf91159..f81701c 100644 (file)
@@ -92,7 +92,9 @@ _QrCodeObjectImpl::GetRectangle(void) const
     __qrCodeObject.rectangle(coordinates);
 
     for (int i = 0; i < 4; ++i)
+    {
         __pRectangleList->Add(Tizen::Graphics::FloatPoint(coordinates[2 * i], coordinates[(2 * i) + 1]));
+    }
 
     return __pRectangleList;
 
index f8fb607..d218977 100644 (file)
@@ -29,7 +29,7 @@ _QrCodeRecognizerImpl::_QrCodeRecognizerImpl(void)
 
 _QrCodeRecognizerImpl::~_QrCodeRecognizerImpl(void)
 {
-       _QrCodeObjectImpl::ReleaseQrCodeObjectArray(__objectStorage);
+    _QrCodeObjectImpl::ReleaseQrCodeObjectArray(__objectStorage);
 }
 
 bool
@@ -95,7 +95,7 @@ _QrCodeRecognizerImpl::GetQrCodeObject(int index)
     else
     {
         SetLastResult(E_INVALID_ARG);
-        return 0;
+        return null;
     }
 }
 
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)