* {
* Tizen::Uix::Vision::ImageFeatureManager imageFeatureManager;
* imageFeatureManager.Construct();
- * imageFeatureManager.Load("/mnt/ums/Images/testFeatureSet.xdb");
- * imageFeatureManager.AddFeature("/mnt/ums/Images/image1.jpg");
- * imageFeatureManager.AddFeature("/mnt/ums/Images/image2.jpg");
- * imageFeatureManager.AddFeature("/mnt/ums/Images/image3.jpg");
+ * imageFeatureManager.Load("/opt/usr/media/Images/testFeatureSet.xdb");
+ * imageFeatureManager.AddFeature("/opt/usr/media/Images/image1.jpg");
+ * imageFeatureManager.AddFeature("/opt/usr/media/Images/image2.jpg");
+ * imageFeatureManager.AddFeature("/opt/usr/media/Images/image3.jpg");
* imageFeatureManager.Flush();
* }
*/
* @exception E_OUT_OF_MEMORY The memory is insufficient.
*
* @remarks if feature set file exists, it will be updated.
- * if feature set file does not exist, it will be newly created.
+ * if feature set file does not exist, it will return E_INVALID_ARG exception.
* @see
*/
result Load(const Tizen::Base::String& featureSetFilePath);
*
* @since 2.1
*
- * @return Feature index of newly created feature on success.
- * If the specified input image file path is invalid, it returns -1.
+ * @return Feature index of newly created feature on success, otherwise returns -1.
*
* @param[in] imagePath Input image file path
*
*
* @since 2.1
*
- * @return Feature index of newly created feature on success.
- * If A specified input image file path is invalid, it returns -1.
+ * @return Feature index of newly created feature on success, otherwise returns -1.
*
* @param[in] imageBuffer Image buffer of grayscale image data of specified width and height
* @param[in] width Width of input image
* @remarks All changes in feature set file by 'AddFeature' or 'DeleteFeature' or 'DeleteAllFeatures' are updated by calling this Flush() method.
* If featureSetFilePath is not decided or is same to file path used in Load(), the loaded feature set file will be updated.
* If featureSetFilePath is not same to file path used in Load(), the loaded feature set file is remained and new feature set file will be created.
- * @remarks If featureSetFilePath is null, the feature set file loaded by Load() method will be overwritten.
+ * If featureSetFilePath is null, the feature set file loaded by Load() method will be overwritten.
+ * If featureSetFilePath is not decided or is same to file path used in Load() and the loaded feature set file is read-only E_INVALID_ARG exception will be returned.
*
* @see
*/
ImageFeatureInfo::~ImageFeatureInfo()
{
+ if (__pImageFeatureInfoImpl != null)
+ {
+ delete __pImageFeatureInfoImpl;
+ __pImageFeatureInfoImpl = null;
+ }
}
Tizen::Base::String
ImageFeatureManager::~ImageFeatureManager(void)
{
+ if (__pImageFeatureManagerImpl != null)
+ {
+ delete __pImageFeatureManagerImpl;
+ __pImageFeatureManagerImpl = null;
+ }
}
result
SysAssertf(__pImageFeatureManagerImpl != null, "Not yet constructed! Consruct() should be called before use.");
SysTryReturnResult(NID_UIX, !featureSetFilePath.IsEmpty(), E_INVALID_ARG,
- "database path must not be empty. [E_INVALID_ARG]");
+ "feature set path must not be empty. [E_INVALID_ARG]");
+
+ SysTryReturnResult(NID_UIX, Tizen::Io::File::IsFileExist(featureSetFilePath), E_INVALID_ARG,
+ "feature set file must exist. [E_INVALID_ARG]");
return __pImageFeatureManagerImpl->OpenDB(featureSetFilePath) ? E_SUCCESS : E_FAILURE;
}
ImageObject::~ImageObject()
{
+ if (__pImageObjectImpl != null)
+ {
+ delete __pImageObjectImpl;
+ __pImageObjectImpl = null;
+ }
}
int
ImageRecognizer::~ImageRecognizer(void)
{
+ if (__pImageRecognizerImpl != null)
+ {
+ delete __pImageRecognizerImpl;
+ __pImageRecognizerImpl = null;
+ }
}
result
QrCodeGenerator::~QrCodeGenerator(void)
{
+ if (__pQrCodeGeneratorImpl != null)
+ {
+ delete __pQrCodeGeneratorImpl;
+ __pQrCodeGeneratorImpl = null;
+ }
}
result
QrCodeObject::~QrCodeObject(void)
{
+ if (__pQrCodeObjectImpl != null)
+ {
+ delete __pQrCodeObjectImpl;
+ __pQrCodeObjectImpl = null;
+ }
}
int
QrCodeRecognizer::~QrCodeRecognizer(void)
{
+ if (__pQrCodeRecognizerImpl != null)
+ {
+ delete __pQrCodeRecognizerImpl;
+ __pQrCodeRecognizerImpl = null;
+ }
}
result
_ImageFeatureManagerImpl::_ImageFeatureManagerImpl(void)
: __imageFeatureManager(0)
+ , __readOnly(false)
{
}
_ImageFeatureManagerImpl::InitDB(void)
{
__indices.RemoveAll();
- if(__imageFeatureManager)
+ if (__imageFeatureManager)
{
delete __imageFeatureManager;
}
{
Tizen::Media::ImageBuffer imBuf;
result r = imBuf.Construct(filepath, null, false);
- if(IsFailed(r))
+ if (IsFailed(r))
{
return -1;
}
Tizen::Base::ByteBuffer* yuvBuf = imBuf.GetByteBufferN(Tizen::Media::MEDIA_PIXEL_FORMAT_YUV420P);
- if(yuvBuf == null)
+ if (yuvBuf == null)
{
return -1;
}
int
_ImageFeatureManagerImpl::AddFeature(const unsigned char* data, int width, int height, const Tizen::Base::String& info)
{
- if(!__imageFeatureManager)
+ if (!__imageFeatureManager)
+ {
return -1;
-
+ }
Tizen::Text::Utf8Encoding utf8;
int index = (int) __imageFeatureManager->addImageToDB(data, width, height, (char*) utf8.GetBytesN(info)->GetPointer());
bool
_ImageFeatureManagerImpl::DeleteFeature(int index)
{
- if(!__imageFeatureManager)
+ if (!__imageFeatureManager)
+ {
return false;
+ }
int realIndex(0);
__indices.GetAt(index,realIndex);
- if(__imageFeatureManager->deleteImageFromDB(realIndex))
+ if (__imageFeatureManager->deleteImageFromDB(realIndex))
{
__indices.RemoveAt(index);
return true;
__indices.RemoveAll();
result result = E_FAILURE;
- if(!__imageFeatureManager)
+ if (!__imageFeatureManager)
+ {
return E_FAILURE;
+ }
if (null != dbPath)
}
else
{
- if(!__path.IsEmpty())
+ if (!__path.IsEmpty())
{
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;
+ }
}
}
return result;
-
}
bool
{
__indices.RemoveAll();
- if(__imageFeatureManager->updateDB())
+ if (__imageFeatureManager->updateDB())
{
UpdateFeatureIndices();
return true;
bool
_ImageFeatureManagerImpl::OpenDB(const Tizen::Base::String& dbpath)
{
- if(__imageFeatureManager)
+ if (__imageFeatureManager)
{
delete __imageFeatureManager;
}
__imageFeatureManager = new sari2::ImageFeatureManager();
__imageFeatureManager->initDB();
- if(!Tizen::Io::File::IsFileExist(dbpath))
- {
- result r;
- Tizen::Io::File featureFile;
- r = featureFile.Construct(dbpath, "w+");
- //r = featureFile.Flush();
-
- if (IsFailed(r))
- {
- __path = L"";
- return false;
- }
+ Tizen::Text::Utf8Encoding utf8;
+ switch (__imageFeatureManager->openDB((const char*) utf8.GetBytesN(dbpath)->GetPointer()))
+ {
+ case 0: //ok
__path = dbpath;
- __indices.RemoveAll();
-
- }
- else
- {
- Tizen::Text::Utf8Encoding utf8;
- if(!__imageFeatureManager->openDB((const char*) utf8.GetBytesN(dbpath)->GetPointer()))
- {
- __path = L"";
- __indices.RemoveAll();
- return false;
- }
- else
- {
- __path = dbpath;
- UpdateFeatureIndices();
- }
- }
+ UpdateFeatureIndices();
+ break;
+ case -2: //read only feature set file
+ __path = dbpath;
+ UpdateFeatureIndices();
+ __readOnly = true;
+ break;
+ default: //error
+ __path = dbpath;
+ UpdateFeatureIndices();
+ }
return true;
}
void
_ImageFeatureManagerImpl::ReleaseDB(void)
{
- if(!__imageFeatureManager)
+ if (!__imageFeatureManager)
+ {
return;
+ }
__imageFeatureManager->releaseDB();
__indices.RemoveAll();
const Tizen::Uix::Vision::ImageFeatureInfo*
_ImageFeatureManagerImpl::GetImageFeatureInfo(int index)
{
- if(!__imageFeatureManager)
+ if (!__imageFeatureManager)
+ {
return null;
+ }
Tizen::Uix::Vision::ImageFeatureInfo* di = _ImageFeatureInfoImpl::CreateImageFeatureInfoN();
int realIndex(0);
__indices.RemoveAll();
if (!__imageFeatureManager)
+ {
return;
+ }
int total = __imageFeatureManager->totalNumberOfImages();
for (int i = 0; i < total; i++)
sari2::ImageFeatureManager* __imageFeatureManager;
Tizen::Base::String __path;
Tizen::Base::Collection::ArrayListT<int> __indices;
+ bool __readOnly;
};
} } } //Tizen::Uix::Vision
return pQrObject->__pQrCodeObjectImpl;
}
+void
+_QrCodeObjectImpl::ReleaseQrCodeObject(QrCodeObject* pQrCodeObject)
+{
+ delete pQrCodeObject;
+}
+
+void
+_QrCodeObjectImpl::ReleaseQrCodeObjectArray(QrCodeObject* pQrCodeObject)
+{
+ delete[] pQrCodeObject;
+}
+
Tizen::Uix::Vision::QrCodeObject*
_QrCodeObjectImpl::CreateQRCodeObjectStorageN(const unsigned int size)
{
public:
static Tizen::Uix::Vision::QrCodeObject* CreateQRCodeObjectStorageN(const unsigned int size);
static Tizen::Uix::Vision::QrCodeObject* CreateQRCodeObjectN();
+ static void ReleaseQrCodeObject(QrCodeObject* pQrCodeObject);
+ static void ReleaseQrCodeObjectArray(QrCodeObject* pQrCodeObject);
static _QrCodeObjectImpl* GetInstance(QrCodeObject* pQrObject);
static const _QrCodeObjectImpl* GetInstance(const QrCodeObject* pQrObject);
_QrCodeRecognizerImpl::~_QrCodeRecognizerImpl(void)
{
+ _QrCodeObjectImpl::ReleaseQrCodeObjectArray(__objectStorage);
}
bool
/// \return Path size.
unsigned int imagePath(char* path, unsigned int length) const;
-
/// \brief valuate if the object is available for query.
/// \return true if object is available
bool isActive(void) const;
/// \brief Loads database from input file.
/// \param[in] dbPath Database file path.
- /// \return 'true' on success.
- bool openDB(const char* dbPath);
+ /// \return 0 on success.
+ /// \return -1 on failure.
+ /// \return -2 on readonly file.
+ int openDB(const char* dbPath);
/// \brief Delete all objects from the database.
void releaseDB(void);