add patch
[framework/osp/web.git] / src / controls / FWebCtrl_Utility.cpp
1 //\r
2 // Open Service Platform\r
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
4 //\r
5 // Licensed under the Apache License, Version 2.0 (the License);\r
6 // you may not use this file except in compliance with the License.\r
7 // You may obtain a copy of the License at\r
8 //\r
9 //     http://www.apache.org/licenses/LICENSE-2.0\r
10 //\r
11 // Unless required by applicable law or agreed to in writing, software\r
12 // distributed under the License is distributed on an "AS IS" BASIS,\r
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
14 // See the License for the specific language governing permissions and\r
15 // limitations under the License.\r
16 //\r
17 \r
18 /**\r
19  * @file                FWebCtrl_Utility.cpp\r
20  * @brief               The file contains the definition of _Utility class.\r
21  *\r
22  * The file contains the definition of _Utility class.\r
23  */\r
24 \r
25 #include <Ecore.h>\r
26 #include <FAppUiApp.h>\r
27 #include <FAppIAppFrame.h>\r
28 #include <FBaseSysLog.h>\r
29 #include <FApp_AppInfo.h>\r
30 #include <FUiAnim_EflNode.h>\r
31 #include <FUiAnim_VisualElementImpl.h>\r
32 #include <FUiCtrlFrame.h>\r
33 #include <FUi_ControlImpl.h>\r
34 #include "FWebCtrl_Utility.h"\r
35 \r
36 using namespace Tizen::App;\r
37 using namespace Tizen::Base;\r
38 using namespace Tizen::Graphics;\r
39 using namespace Tizen::Ui;\r
40 using namespace Tizen::Ui::Controls;\r
41 using namespace Tizen::Ui::Animations;\r
42 \r
43 namespace Tizen { namespace Web { namespace Controls\r
44 {\r
45 \r
46 \r
47 static const float SEVICE_APP_FRAME_SIZE = 200;\r
48 \r
49 \r
50 _Utility::_Utility(void)\r
51 {\r
52 }\r
53 \r
54 _Utility::~_Utility(void)\r
55 {\r
56 }\r
57 \r
58 \r
59 Evas*\r
60 _Utility::GetEvasFromUiApp(Tizen::Ui::Controls::Frame* pTempFrame)\r
61 {\r
62         Frame* pFrame = null;\r
63         Evas* pEvas = null;\r
64         if (_AppInfo::GetAppType() == _APP_TYPE_UI_APP)\r
65         {\r
66                 IAppFrame* pAppFrame = Application::GetInstance()->GetAppFrame();\r
67                 SysTryReturn(NID_WEB_CTRL, pAppFrame, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));\r
68 \r
69                 pFrame = pAppFrame->GetFrame();\r
70                 SysTryReturn(NID_WEB_CTRL, pFrame, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));               \r
71         }\r
72         else\r
73         {\r
74                 pFrame = new (std::nothrow) Frame();\r
75                 pFrame->Construct(Rectangle(0, 0, SEVICE_APP_FRAME_SIZE, SEVICE_APP_FRAME_SIZE)); \r
76 \r
77                 pTempFrame = pFrame;\r
78         }\r
79 \r
80         _ControlImpl* pControlimpl = _ControlImpl::GetInstance(*pFrame);\r
81         SysTryReturn(NID_WEB_CTRL, pControlimpl, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));\r
82 \r
83         VisualElement* pVisual = pControlimpl->GetCore().GetVisualElement();\r
84         SysTryReturn(NID_WEB_CTRL, pVisual, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));\r
85 \r
86         _VisualElementImpl* pWebVisualElementImpl = _VisualElementImpl::GetInstance(*pVisual);\r
87         SysTryReturn(NID_WEB_CTRL,pWebVisualElementImpl, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));\r
88 \r
89         _EflNode* pEflNode = dynamic_cast< _EflNode* >(pWebVisualElementImpl->GetNativeNode());\r
90         SysTryReturn(NID_WEB_CTRL, pEflNode, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));\r
91 \r
92         pEvas = pEflNode->GetEvas();\r
93         SysTryReturn(NID_WEB_CTRL, pEvas, null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));\r
94 \r
95         return pEvas;\r
96 }\r
97 \r
98 \r
99 result\r
100 _Utility::GetPixelBufferFromEvasObject(const Evas_Object* source, Tizen::Graphics::BufferInfo& bufferInfo)\r
101 {\r
102         bufferInfo.pPixels = evas_object_image_data_get(source, EINA_FALSE);\r
103         SysTryReturnResult(NID_WEB_CTRL, bufferInfo.pPixels, E_INVALID_DATA, "Failed to get pixel data from evas object.");\r
104 \r
105         evas_object_image_size_get(source, &bufferInfo.width, &bufferInfo.height);\r
106 \r
107         Evas_Colorspace colorSpace = evas_object_image_colorspace_get(source);\r
108 \r
109         switch (colorSpace)\r
110         {\r
111         case EVAS_COLORSPACE_ARGB8888:\r
112                 bufferInfo.bitsPerPixel = 32;\r
113                 bufferInfo.pixelFormat = PIXEL_FORMAT_ARGB8888;\r
114                 break;\r
115 \r
116         case EVAS_COLORSPACE_YCBCR422P601_PL:\r
117                 bufferInfo.bitsPerPixel = 0;\r
118                 bufferInfo.pixelFormat = PIXEL_FORMAT_MIN;\r
119                 break;\r
120 \r
121         case EVAS_COLORSPACE_YCBCR422P709_PL:\r
122                 bufferInfo.bitsPerPixel = 0;\r
123                 bufferInfo.pixelFormat = PIXEL_FORMAT_MIN;\r
124                 break;\r
125 \r
126         case EVAS_COLORSPACE_RGB565_A5P:\r
127                 bufferInfo.bitsPerPixel = 0;\r
128                 bufferInfo.pixelFormat = PIXEL_FORMAT_MIN;\r
129                 break;\r
130 \r
131         case EVAS_COLORSPACE_GRY8:\r
132                 bufferInfo.bitsPerPixel = 0;\r
133                 bufferInfo.pixelFormat = PIXEL_FORMAT_MIN;\r
134                 break;\r
135 \r
136         case EVAS_COLORSPACE_YCBCR422601_PL:\r
137                 bufferInfo.bitsPerPixel = 0;\r
138                 bufferInfo.pixelFormat = PIXEL_FORMAT_MIN;\r
139                 break;\r
140 \r
141         case EVAS_COLORSPACE_YCBCR420NV12601_PL:\r
142                 bufferInfo.bitsPerPixel = 0;\r
143                 bufferInfo.pixelFormat = PIXEL_FORMAT_MIN;\r
144                 break;\r
145 \r
146         case EVAS_COLORSPACE_YCBCR420TM12601_PL:\r
147                 bufferInfo.bitsPerPixel = 0;\r
148                 bufferInfo.pixelFormat = PIXEL_FORMAT_MIN;\r
149                 break;\r
150 \r
151         default:\r
152                 bufferInfo.bitsPerPixel = 0;\r
153                 bufferInfo.pixelFormat = PIXEL_FORMAT_MIN;\r
154                 break;\r
155         }\r
156 \r
157         bufferInfo.pitch = bufferInfo.width * bufferInfo.bitsPerPixel / 8;\r
158 \r
159         SysLog(NID_WEB_CTRL, "color space : %d, pitch (%d), w-h (%d, %d)", colorSpace, bufferInfo.pitch, bufferInfo.width, bufferInfo.height);\r
160 \r
161         return E_SUCCESS;\r
162 }\r
163 \r
164 \r
165 String\r
166 _Utility::CreateOrigin(const Ewk_Security_Origin* pSecurityOrigin)\r
167 {\r
168         String protocol(ewk_security_origin_protocol_get(pSecurityOrigin));\r
169         String host(ewk_security_origin_host_get(pSecurityOrigin));\r
170         int port = ewk_security_origin_port_get(pSecurityOrigin);\r
171 \r
172         String origin = protocol + L"://" + host;\r
173 \r
174         if (port)\r
175         {\r
176                 origin.Append(L":");\r
177                 origin.Append(port);\r
178         }\r
179 \r
180         SysLog(NID_WEB_CTRL, "The current value of origin is %ls", origin.GetPointer());\r
181 \r
182         return origin;\r
183 }\r
184 \r
185 \r
186 }}}\r