QrCodeGenerator::~QrCodeGenerator(void)
{
- delete __pQrCodeGeneratorImpl;
+ if (__pQrCodeGeneratorImpl != null)
+ {
+ delete __pQrCodeGeneratorImpl;
+ __pQrCodeGeneratorImpl = null;
+ }
}
result
SysAssertf(__pQrCodeGeneratorImpl == null, "Already constructed! ",
"Calling Construct() twice or more on a same instance is not allowed for this class.");
- __pQrCodeGeneratorImpl = new (std::nothrow) _QrCodeGeneratorImpl;
- SysTryReturnResult(NID_UIX, __pQrCodeGeneratorImpl != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
+ std::unique_ptr<_QrCodeGeneratorImpl> pQrCodeGeneratorImpl(new (std::nothrow) _QrCodeGeneratorImpl());
+ SysSecureTryReturn(NID_UIX, pQrCodeGeneratorImpl != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+ __pQrCodeGeneratorImpl = pQrCodeGeneratorImpl.release();
+
return E_SUCCESS;
}
{
SysAssertf(__pQrCodeGeneratorImpl != null, "Not yet constructed! Consruct() should be called before use.");
- SysTryReturnResult(NID_UIX, !message.IsEmpty(), null,
+ SysSecureTryReturnResult(NID_UIX, !message.IsEmpty(), null,
"message must not be empty. [E_INVALID_ARG]");
Tizen::Text::Utf8Encoding utf8;
- __pQrCodeGeneratorImpl->Encode((char*) utf8.GetBytesN(message)->GetPointer(), mode, error_level, compatibility);
-
+ std::unique_ptr<Tizen::Base::ByteBuffer> pMessageBuffer(utf8.GetBytesN(message));
+ __pQrCodeGeneratorImpl->Encode((char*) pMessageBuffer->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());
+ SysSecureTryReturn(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 pBuffer.release();
+ }
+ else
{
- return buffer;
- } else {
- delete buffer;
return null;
}
result
QrCodeGenerator::EncodeToFile(const Tizen::Base::String& message, QrCodeMode mode, QrCodeErrorCorrectionLevel errorCorrectionLevel, bool compatibility, const Tizen::Base::String& imageFilePath, Tizen::Media::ImageFormat imageFormat, int& width, int& height)
{
+ result r = E_SUCCESS;
SysAssertf(__pQrCodeGeneratorImpl != null, "Not yet constructed! Consruct() should be called before use.");
- SysTryReturnResult(NID_UIX, !message.IsEmpty(), E_INVALID_ARG,
- "message must not be empty. [E_INVALID_ARG]");
+ SysSecureTryReturnResult(NID_UIX, !message.IsEmpty(), E_INVALID_ARG,
+ "message must not be empty. [E_INVALID_ARG]");
- SysTryReturnResult(NID_UIX, !imageFilePath.IsEmpty(), E_INVALID_ARG,
- "image path must not be empty. [E_INVALID_ARG]");
+ SysSecureTryReturnResult(NID_UIX, !imageFilePath.IsEmpty(), E_INVALID_ARG,
+ "image path must not be empty. [E_INVALID_ARG]");
- Tizen::Text::Utf8Encoding utf8;
- if (!__pQrCodeGeneratorImpl->Encode((char*) utf8.GetBytesN(message)->GetPointer(), mode, errorCorrectionLevel, compatibility))
- {
- return E_FAILURE;
- }
+ Tizen::Text::Utf8Encoding utf8;
+ std::unique_ptr<Tizen::Base::ByteBuffer> pBuffer(utf8.GetBytesN(message));
+ if (!__pQrCodeGeneratorImpl->Encode((char*) pBuffer->GetPointer(), mode, errorCorrectionLevel, compatibility))
+ {
+ return E_FAILURE;
+ }
+
+ if(!__pQrCodeGeneratorImpl->SaveToFile(imageFilePath, imageFormat,width, height))
+ {
+ r = GetLastResult();
+ if( r == E_ILLEGAL_ACCESS || r == E_OUT_OF_RANGE)
+ {
+ r = E_FILE_NOT_FOUND;
+ }
+ else if (r == E_UNSUPPORTED_FORMAT)
+ {
+ r = E_INVALID_ARG;
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
- return __pQrCodeGeneratorImpl->SaveToFile(imageFilePath, imageFormat) ? E_SUCCESS : E_FAILURE;
+ }
+
+ return r;
}
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>);
+ SysSecureTryReturn(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