#include <FMedia.h>
#include "IvImageCrop.h"
#include "IvImageViewerPresentationModel.h"
+#include "IvResourceManager.h"
#include "IvTypes.h"
using namespace Tizen::App;
using namespace Tizen::Base;
using namespace Tizen::Base::Collection;
using namespace Tizen::Graphics;
+using namespace Tizen::Io;
using namespace Tizen::Media;
using namespace Tizen::Ui::Controls;
using namespace Tizen::Ui::Scenes;
{
delete __pCurrentBitmap;
}
-
if (__pRectangleBitmap != null)
{
delete __pRectangleBitmap;
}
-
if (__pCanvas != null)
{
delete __pCanvas;
pFilePath = static_cast<String*>(pArgs->GetAt(0));
delete pArgs;
}
- __destFilePath.Append(*pFilePath);
- __destFilePath.Reverse();
- int index = 0;
- String delimiter = L".";
- __destFilePath.IndexOf(delimiter, 0, index);
- __destFilePath.Reverse();
- String stringToInsert = L"_1";
- __destFilePath.Insert(stringToInsert, __destFilePath.GetLength() - index - 1);
- __imageBuffer.GetImageInfo(pFilePath->GetPointer(), __imageFormat, __imageWidth, __imageHeight);
- __imageBuffer.Construct(pFilePath->GetPointer());
- __pCurrentBitmap = __imageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_RGB565, BUFFER_SCALING_AUTO);
+ else
+ {
+ return;
+ }
+ if (pFilePath != null)
+ {
+ __sourceFilePath.Append(*pFilePath);
+ __imageBuffer.GetImageInfo(pFilePath->GetPointer(), __imageFormat, __imageWidth, __imageHeight);
+ __imageBuffer.Construct(pFilePath->GetPointer());
+ __pCurrentBitmap = __imageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_RGB565, BUFFER_SCALING_AUTO);
+ }
if (__imageWidth > GetClientAreaBounds().width && __imageHeight > GetClientAreaBounds().height)
{
AppLogDebug("ENTER");
if (__pCanvas != null)
{
- __pCanvas->SetLineWidth(CROP_BOX_LINE_WIDTH);
- __pCanvas->DrawBitmap(Rectangle(__imageBox.x, __imageBox.y, __imageBox.width, __imageBox.height), *__pCurrentBitmap);
- __pCanvas->DrawRectangle(Rectangle(__cropBox.x, __cropBox.y, __cropBox.width, __cropBox.height));
- __pCanvas->DrawBitmap(Rectangle((__cropBox.x + __cropBox.width / 2) - (CROP_RECTANGLE_HEIGHT / 2), __cropBox.y - (CROP_RECTANGLE_HEIGHT / 2), CROP_RECTANGLE_HEIGHT, CROP_RECTANGLE_HEIGHT), *__pRectangleBitmap); // Top Rectangle
- __pCanvas->DrawBitmap(Rectangle((__cropBox.x + __cropBox.width / 2) - (CROP_RECTANGLE_HEIGHT / 2), (__cropBox.y + __cropBox.height - (CROP_RECTANGLE_HEIGHT / 2)), CROP_RECTANGLE_HEIGHT, CROP_RECTANGLE_HEIGHT), *__pRectangleBitmap); // Bottom Rectangle
- __pCanvas->DrawBitmap(Rectangle(__cropBox.x - (CROP_RECTANGLE_HEIGHT / 2), (__cropBox.y + __cropBox.height / 2) - (CROP_RECTANGLE_HEIGHT / 2), CROP_RECTANGLE_HEIGHT, CROP_RECTANGLE_HEIGHT), *__pRectangleBitmap); //Left Rectangle
- __pCanvas->DrawBitmap(Rectangle(__cropBox.x + __cropBox.width - (CROP_RECTANGLE_HEIGHT / 2), (__cropBox.y + __cropBox.height / 2) - (CROP_RECTANGLE_HEIGHT / 2), CROP_RECTANGLE_HEIGHT, CROP_RECTANGLE_HEIGHT), *__pRectangleBitmap); //Right Rectangle
+ r = __pCanvas->SetLineWidth(CROP_BOX_LINE_WIDTH);
+ r = __pCanvas->DrawBitmap(Rectangle(__imageBox.x, __imageBox.y, __imageBox.width, __imageBox.height), *__pCurrentBitmap);
+ r = __pCanvas->DrawRectangle(Rectangle(__cropBox.x, __cropBox.y, __cropBox.width, __cropBox.height));
+ r = __pCanvas->DrawBitmap(Rectangle((__cropBox.x + __cropBox.width / 2) - (CROP_RECTANGLE_HEIGHT / 2), __cropBox.y - (CROP_RECTANGLE_HEIGHT / 2), CROP_RECTANGLE_HEIGHT, CROP_RECTANGLE_HEIGHT), *__pRectangleBitmap); // Top Rectangle
+ r = __pCanvas->DrawBitmap(Rectangle((__cropBox.x + __cropBox.width / 2) - (CROP_RECTANGLE_HEIGHT / 2), (__cropBox.y + __cropBox.height - (CROP_RECTANGLE_HEIGHT / 2)), CROP_RECTANGLE_HEIGHT, CROP_RECTANGLE_HEIGHT), *__pRectangleBitmap); // Bottom Rectangle
+ r = __pCanvas->DrawBitmap(Rectangle(__cropBox.x - (CROP_RECTANGLE_HEIGHT / 2), (__cropBox.y + __cropBox.height / 2) - (CROP_RECTANGLE_HEIGHT / 2), CROP_RECTANGLE_HEIGHT, CROP_RECTANGLE_HEIGHT), *__pRectangleBitmap); //Left Rectangle
+ r = __pCanvas->DrawBitmap(Rectangle(__cropBox.x + __cropBox.width - (CROP_RECTANGLE_HEIGHT / 2), (__cropBox.y + __cropBox.height / 2) - (CROP_RECTANGLE_HEIGHT / 2), CROP_RECTANGLE_HEIGHT, CROP_RECTANGLE_HEIGHT), *__pRectangleBitmap); //Right Rectangle
+ r = __pCanvas->DrawBitmap(Rectangle(__cropBox.x - (CROP_RECTANGLE_HEIGHT / 2), __cropBox.y - (CROP_RECTANGLE_HEIGHT / 2), CROP_RECTANGLE_HEIGHT, CROP_RECTANGLE_HEIGHT), *__pRectangleBitmap); // Top Left Rectangle
+ r = __pCanvas->DrawBitmap(Rectangle(__cropBox.x + __cropBox.width - (CROP_RECTANGLE_HEIGHT / 2), __cropBox.y - (CROP_RECTANGLE_HEIGHT / 2), CROP_RECTANGLE_HEIGHT, CROP_RECTANGLE_HEIGHT), *__pRectangleBitmap); // Top Right Rectangle
+ r = __pCanvas->DrawBitmap(Rectangle(__cropBox.x + __cropBox.width - (CROP_RECTANGLE_HEIGHT / 2), (__cropBox.y + __cropBox.height - (CROP_RECTANGLE_HEIGHT / 2)), CROP_RECTANGLE_HEIGHT, CROP_RECTANGLE_HEIGHT), *__pRectangleBitmap); // Bottom Right Rectangle
+ r = __pCanvas->DrawBitmap(Rectangle(__cropBox.x - (CROP_RECTANGLE_HEIGHT / 2), (__cropBox.y + __cropBox.height - (CROP_RECTANGLE_HEIGHT / 2)), CROP_RECTANGLE_HEIGHT, CROP_RECTANGLE_HEIGHT), *__pRectangleBitmap); // Bottom Left Rectangle
}
AppLogDebug("EXIT");
return r;
break;
case IDA_BUTTON_SAVE:
{
- ImageBuffer* pCropbuffer = null;
- pCropbuffer = __imageBuffer.CropN(((__cropBox.x - __imageBox.x) * __imageWidth) / __imageBox.width, ((__cropBox.y - __imageBox.y) * __imageHeight) / __imageBox.height,
- (__cropBox.width * __imageWidth) / __imageBox.width, (__cropBox.height * __imageHeight) / __imageBox.height);
- pCropbuffer->EncodeToFile(__destFilePath, __imageFormat, true, 100);
- delete pCropbuffer;
-
+ ImageBuffer* pCropBuffer = null;
+ int count = 1;
+ int index = 0;
+ String destFilePath;
+ String stringToInsert = L"_";
+ String delimiter = L".";
+ if (__sourceFilePath.IsEmpty() == false)
+ {
+ __sourceFilePath.Reverse();
+ __sourceFilePath.IndexOf(delimiter, 0, index);
+ __sourceFilePath.Reverse();
+ __sourceFilePath.Insert(stringToInsert, __sourceFilePath.GetLength() - index - 1);
+ destFilePath.Append(__sourceFilePath);
+ destFilePath.Insert(count, destFilePath.GetLength() - index - 1);
+ while (File::IsFileExist(destFilePath) == true)
+ {
+ count++;
+ destFilePath.Clear();
+ destFilePath.Append(__sourceFilePath);
+ destFilePath.Insert(count, destFilePath.GetLength() - index - 1);
+ }
+ pCropBuffer = __imageBuffer.CropN(((__cropBox.x - __imageBox.x) * __imageWidth) / __imageBox.width, ((__cropBox.y - __imageBox.y) * __imageHeight) / __imageBox.height,
+ (__cropBox.width * __imageWidth) / __imageBox.width, (__cropBox.height * __imageHeight) / __imageBox.height);
+ pCropBuffer->EncodeToFile(destFilePath, __imageFormat, true, 100);
+ delete pCropBuffer;
+ }
pSceneManager->GoBackward(BackwardSceneTransition());
AppLog("Exit");
}
ImageCropForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
{
AppLogDebug("ENTER");
+ int deltaX = currentPosition.x - __touchStart.x;
+ int deltaY = currentPosition.y - __touchStart.y;
if (__pointLocation == INSIDE_TOP_RECTANGLE)
{
- int deltaY = currentPosition.y - __touchStart.y;
-
- if ((__cropBox.y + deltaY) > __imageBox.y)
+ if ((__cropBox.y + deltaY) > __imageBox.y && deltaY < (__cropBox.height - (CROP_RECTANGLE_HEIGHT * 3)))
{
- if (__cropBox.height <= (CROP_RECTANGLE_HEIGHT * 2) && deltaY > 0)
- {
- __cropBox.height = (CROP_RECTANGLE_HEIGHT * 2);
- }
- else
- {
- __cropBox.y += deltaY;
- __cropBox.height -= deltaY;
- }
+ __cropBox.y += deltaY;
+ __cropBox.height -= deltaY;
}
- RequestRedraw(false);
}
else if (__pointLocation == INSIDE_BOTTOM_RECTANGLE)
{
- int deltaY = currentPosition.y - __touchStart.y;
- if ((__cropBox.y + __cropBox.height + deltaY ) < (__imageBox.y + __imageBox.height) && deltaY < __cropBox.height)
+ if ((__cropBox.y + __cropBox.height + deltaY ) < (__imageBox.y + __imageBox.height) && (__cropBox.height + deltaY) > (CROP_RECTANGLE_HEIGHT * 3))
{
- if (__cropBox.height <= (CROP_RECTANGLE_HEIGHT * 2) && deltaY < 0)
- {
- __cropBox.height = (CROP_RECTANGLE_HEIGHT * 2);
- }
- else
- {
- __cropBox.height += deltaY;
- }
+ __cropBox.height += deltaY;
}
- RequestRedraw(false);
}
else if (__pointLocation == INSIDE_LEFT_RECTANGLE)
{
- int deltaX = currentPosition.x - __touchStart.x;
- if ((__cropBox.x + deltaX) > __imageBox.x && deltaX < __cropBox.width)
+ if ((__cropBox.x + deltaX) > __imageBox.x && deltaX < __cropBox.width - (CROP_RECTANGLE_HEIGHT * 3))
{
- if (__cropBox.width <= (CROP_RECTANGLE_HEIGHT * 2) && deltaX > 0)
- {
- __cropBox.width = (CROP_RECTANGLE_HEIGHT * 2);
- }
- else
- {
- __cropBox.x += deltaX;
- __cropBox.width -= deltaX;
- }
+ __cropBox.x += deltaX;
+ __cropBox.width -= deltaX;
}
- RequestRedraw(false);
}
else if (__pointLocation == INSIDE_RIGHT_RECTANGLE)
{
- int deltaX = currentPosition.x - __touchStart.x;
- if ((__cropBox.x + __cropBox.width + deltaX) < (__imageBox.x + __imageBox.width) && deltaX < __cropBox.width)
+ if ((__cropBox.x + __cropBox.width + deltaX) < (__imageBox.x + __imageBox.width) && __cropBox.width + deltaX > (CROP_RECTANGLE_HEIGHT * 3))
+ {
+ __cropBox.width += deltaX;
+ }
+ }
+ else if (__pointLocation == INSIDE_TOP_LEFT_RECTANGLE)
+ {
+ if ((__cropBox.y + deltaY) > __imageBox.y && deltaY < (__cropBox.height - (CROP_RECTANGLE_HEIGHT * 3))
+ && (__cropBox.x + deltaX) > __imageBox.x && deltaX < __cropBox.width - (CROP_RECTANGLE_HEIGHT * 3))
+ {
+ __cropBox.y += deltaY;
+ __cropBox.height -= deltaY;
+ __cropBox.x += deltaX;
+ __cropBox.width -= deltaX;
+ }
+ }
+ else if (__pointLocation == INSIDE_TOP_RIGHT_RECTANGLE)
+ {
+ if ((__cropBox.y + deltaY) > __imageBox.y && deltaY < (__cropBox.height - (CROP_RECTANGLE_HEIGHT * 3))
+ && (__cropBox.x + __cropBox.width + deltaX) < (__imageBox.x + __imageBox.width) && __cropBox.width + deltaX > (CROP_RECTANGLE_HEIGHT * 3))
{
- if (__cropBox.width <= (CROP_RECTANGLE_HEIGHT * 2) && deltaX < 0)
- __cropBox.width = (CROP_RECTANGLE_HEIGHT * 2);
- else
__cropBox.width += deltaX;
+ __cropBox.y += deltaY;
+ __cropBox.height -= deltaY;
+ }
+ }
+ else if (__pointLocation == INSIDE_BOTTOM_LEFT_RECTANGLE)
+ {
+ if ((__cropBox.y + __cropBox.height + deltaY ) < (__imageBox.y + __imageBox.height) && (__cropBox.height + deltaY) > (CROP_RECTANGLE_HEIGHT * 3)
+ && (__cropBox.x + deltaX) > __imageBox.x && deltaX < __cropBox.width - (CROP_RECTANGLE_HEIGHT * 3))
+ {
+ __cropBox.x += deltaX;
+ __cropBox.width -= deltaX;
+ __cropBox.height += deltaY;
}
- RequestRedraw(false);
+ }
+ else if (__pointLocation == INSIDE_BOTTOM_RIGHT_RECTANGLE)
+ {
+ if ((__cropBox.x + __cropBox.width + deltaX) < (__imageBox.x + __imageBox.width) && __cropBox.width + deltaX > (CROP_RECTANGLE_HEIGHT * 3)
+ && (__cropBox.y + __cropBox.height + deltaY ) < (__imageBox.y + __imageBox.height) && (__cropBox.height + deltaY) > (CROP_RECTANGLE_HEIGHT * 3))
+ {
+ __cropBox.width += deltaX;
+ __cropBox.height += deltaY;
+ }
+
}
else if (__pointLocation == INSIDE_CROPBOX)
{
- int deltaX = currentPosition.x - __touchStart.x;
- int deltaY = currentPosition.y - __touchStart.y;
if ((__cropBox.x + deltaX) > __imageBox.x)
{
__cropBox.x += deltaX;
{
__cropBox.y = __imageBox.y + __imageBox.height - __cropBox.height;
}
- RequestRedraw(false);
}
+ RequestRedraw(false);
__touchStart = currentPosition;
AppLogDebug("EXIT");
}
{
__pointLocation = INSIDE_BOTTOM_RECTANGLE;
}
+ else if (currentPosition.x > (__cropBox.x - (CROP_RECTANGLE_HEIGHT / 2)) && currentPosition.x < (__cropBox.x + (CROP_RECTANGLE_HEIGHT / 2))
+ && currentPosition.y > (__cropBox.y - (CROP_RECTANGLE_HEIGHT / 2)) && currentPosition.y < (__cropBox.y +(CROP_RECTANGLE_HEIGHT / 2)))
+ {
+ __pointLocation = INSIDE_TOP_LEFT_RECTANGLE;
+ }
+ else if (currentPosition.x > ((__cropBox.x + __cropBox.width / 2) - (CROP_RECTANGLE_HEIGHT / 2)) && currentPosition.x < (__cropBox.x + __cropBox.width + (CROP_RECTANGLE_HEIGHT / 2))
+ && currentPosition.y > (__cropBox.y - (CROP_RECTANGLE_HEIGHT / 2)) && currentPosition.y < (__cropBox.y +(CROP_RECTANGLE_HEIGHT / 2)))
+ {
+ __pointLocation = INSIDE_TOP_RIGHT_RECTANGLE;
+ }
+ else if (currentPosition.x > (__cropBox.x + __cropBox.width - (CROP_RECTANGLE_HEIGHT / 2)) && currentPosition.x < (__cropBox.x + __cropBox.width + (CROP_RECTANGLE_HEIGHT / 2))
+ && currentPosition.y > (__cropBox.y + __cropBox.height - (CROP_RECTANGLE_HEIGHT / 2)) && currentPosition.y < (__cropBox.y + __cropBox.height + (CROP_RECTANGLE_HEIGHT / 2)))
+ {
+ __pointLocation = INSIDE_BOTTOM_RIGHT_RECTANGLE;
+ }
+ else if (currentPosition.x > (__cropBox.x - (CROP_RECTANGLE_HEIGHT / 2)) && currentPosition.x < (__cropBox.x + (CROP_RECTANGLE_HEIGHT / 2))
+ && currentPosition.y > (__cropBox.y + __cropBox.height - (CROP_RECTANGLE_HEIGHT / 2)) && currentPosition.y < (__cropBox.y + __cropBox.height + (CROP_RECTANGLE_HEIGHT / 2)))
+ {
+ __pointLocation = INSIDE_BOTTOM_LEFT_RECTANGLE;
+ }
else if (currentPosition.x > __cropBox.x && currentPosition.x < (__cropBox.x + __cropBox.width) && currentPosition.y > __cropBox.y && currentPosition.y < (__cropBox.y + __cropBox.height))
{
__pointLocation = INSIDE_CROPBOX;