2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
18 * @file FUiCtrl_SliderOverlay.cpp
19 * @brief This is the implementation file for the _SliderOverlay class.
22 #include <FBaseSysLog.h>
23 #include <FBaseErrorDefine.h>
24 #include <FGrp_BitmapImpl.h>
25 #include "FUiAnim_VisualElement.h"
26 #include "FUiCtrl_SliderOverlay.h"
27 #include "FUi_ResourceManager.h"
29 using namespace Tizen::Graphics;
31 namespace Tizen { namespace Ui { namespace Controls
34 _SliderOverlay::_SliderOverlay(void)
35 : __pOverlayBgBitmap(null)
36 , __pOverlayBgEffectBitmap(null)
37 , __pOverlayBottomBgBitmap(null)
38 , __pOverlayBottomBgEffectBitmap(null)
40 , __overlayTextColor(0)
43 Tizen::Ui::Animations::_VisualElement* pBase = GetVisualElement();
47 pBase->SetSurfaceOpaque(false);
51 _SliderOverlay::~_SliderOverlay(void)
53 delete __pOverlayBgBitmap;
54 __pOverlayBgBitmap = null;
56 delete __pOverlayBgEffectBitmap;
57 __pOverlayBgEffectBitmap = null;
59 delete __pOverlayBottomBgBitmap;
60 __pOverlayBgBitmap = null;
62 delete __pOverlayBottomBgEffectBitmap;
63 __pOverlayBgEffectBitmap = null;
69 _SliderOverlay::Construct(void)
72 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
74 #if defined(MULTI_WINDOW)
75 r = CreateRootVisualElement();
76 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
78 SetActivationEnabled(false);
83 r = GET_COLOR_CONFIG(SLIDER::OVERLAY_BG_NORMAL, __overlayBgColor);
84 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
86 r = GET_COLOR_CONFIG(SLIDER::OVERLAY_TEXT_NORMAL, __overlayTextColor);
87 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
90 r = GET_SHAPE_CONFIG(SLIDER::OVERLAY_WIDTH, orientation, dim.width);
91 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
93 r = GET_SHAPE_CONFIG(SLIDER::OVERLAY_HEIGHT, orientation, dim.height);
94 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
97 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
103 _SliderOverlay::SetSliderRect(Rectangle& sliderRect, Rectangle& sliderTouchRect)
105 __sliderRect = sliderRect;
106 __sliderTouchRect = sliderTouchRect;
112 _SliderOverlay::SetFont(Tizen::Graphics::Font* pFont)
119 _SliderOverlay::LoadBitmaps(Dimension& dim)
121 result r = E_SUCCESS;
123 Bitmap* pBitmap = null;
124 Bitmap* pReplacementBitmap = null;
126 r = GET_BITMAP_CONFIG_N(SLIDER::UPWARD_OVERLAY_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBitmap);
127 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "Propagating.");
129 pReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBitmap, Color::GetColor(COLOR_ID_MAGENTA), __overlayBgColor);
131 SysTryCatch(NID_UI_CTRL, pReplacementBitmap != null, , r, "[%s] Propagating.", GetErrorMessage(r));
133 delete __pOverlayBgBitmap;
134 __pOverlayBgBitmap = pReplacementBitmap;
139 r = GET_BITMAP_CONFIG_N(SLIDER::DOWNWARD_OVERLAY_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBitmap);
140 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.");
142 pReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBitmap, Color::GetColor(COLOR_ID_MAGENTA), __overlayBgColor);
144 SysTryCatch(NID_UI_CTRL, pReplacementBitmap != null, , r, "[%s] Propagating.", GetErrorMessage(r));
146 delete __pOverlayBottomBgBitmap;
147 __pOverlayBottomBgBitmap = pReplacementBitmap;
153 r = GET_BITMAP_CONFIG_N(SLIDER::UPWARD_OVERLAY_BG_EFFECT, BITMAP_PIXEL_FORMAT_ARGB8888, pBitmap);
154 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "Propagating.");
156 delete __pOverlayBgEffectBitmap;
157 __pOverlayBgEffectBitmap = pBitmap;
159 r = GET_BITMAP_CONFIG_N(SLIDER::DOWNWARD_OVERLAY_BG_EFFECT, BITMAP_PIXEL_FORMAT_ARGB8888, pBitmap);
160 SysTryReturnResult(NID_UI_CTRL, (r == E_SUCCESS), r, "Propagating.");
162 delete __pOverlayBottomBgEffectBitmap;
163 __pOverlayBottomBgEffectBitmap = pBitmap;
175 _SliderOverlay::DrawSliderOverlay(int positionX, int handleWidth, int value)
177 result r = E_SUCCESS;
179 int overlayWidth = 0;
180 int overlayHeight = 0;
181 int overlayBottomMargin = 0;
182 int overlayTextSize = 0;
183 int overlayBodyHeight = 0;
185 int overlayOffset = 0;
186 Point textPoint(0, 0);
188 Bitmap* pBgBitmap = __pOverlayBgBitmap;
189 Bitmap* pEffectBgBitmap = __pOverlayBgEffectBitmap;
191 Tizen::Base::String text;
193 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
195 r = GET_SHAPE_CONFIG(SLIDER::OVERLAY_WIDTH, orientation, overlayWidth);
196 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
198 r = GET_SHAPE_CONFIG(SLIDER::OVERLAY_HEIGHT, orientation, overlayHeight);
199 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
201 r = GET_SHAPE_CONFIG(SLIDER::OVERLAY_BOTTOM_MARGIN, orientation, overlayBottomMargin);
202 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
204 r = GET_SHAPE_CONFIG(SLIDER::OVERLAY_HEIGHT_WITHOUT_ARROW, orientation, overlayBodyHeight);
205 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
207 if (text.GetLength() == SLIDER_OVERLAY_THREE_DIGIT)
209 r = GET_SHAPE_CONFIG(SLIDER::OVERLAY_TEXT_SIZE_THREE_CHARACTERS, orientation, overlayTextSize);
210 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
212 else if (text.GetLength() == SLIDER_OVERLAY_TWO_DIGIT)
214 r = GET_SHAPE_CONFIG(SLIDER::OVERLAY_TEXT_SIZE_TWO_CHARACTERS, orientation, overlayTextSize);
215 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
219 r = GET_SHAPE_CONFIG(SLIDER::OVERLAY_TEXT_SIZE_ONE_CHARACTER, orientation, overlayTextSize);
220 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
223 if (__sliderTouchRect.y > 0)
225 overlayY = __sliderTouchRect.y;
228 __sliderOverlayRect = Rectangle(__sliderRect.x + positionX + (handleWidth - overlayWidth) / 2,
229 __sliderRect.y + overlayY - (overlayHeight + overlayBottomMargin),
230 overlayWidth, overlayHeight);
232 if (__sliderOverlayRect.y <= 0)
234 if (__sliderRect.height < (__sliderTouchRect.y + __sliderTouchRect.height))
236 overlayOffset = __sliderRect.height;
240 overlayOffset = __sliderTouchRect.y + __sliderTouchRect.height;
242 __sliderOverlayRect.y = __sliderRect.y + overlayOffset + overlayBottomMargin;
243 pBgBitmap = __pOverlayBottomBgBitmap;
244 pEffectBgBitmap = __pOverlayBottomBgEffectBitmap;
245 textPoint.y = overlayHeight - overlayBodyHeight;
248 // Check SliderOverlay Position
249 if (__sliderOverlayRect.x < __sliderRect.x)
251 __sliderOverlayRect.x = __sliderRect.x;
253 if (__sliderOverlayRect.x + __sliderOverlayRect.width > __sliderRect.x + __sliderRect.width)
255 __sliderOverlayRect.x = __sliderRect.x + __sliderRect.width - __sliderOverlayRect.width;
257 SetBounds(__sliderOverlayRect);
259 // Get canvas & Clear BG
260 Canvas* pCanvas = GetCanvasN();
261 SysTryReturn(NID_UI_CTRL, pCanvas != null, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] System error occurred.");
263 pCanvas->SetBackgroundColor(Color(0x00000000));
266 (_FontImpl::GetInstance(*__pFont))->SetSize(overlayTextSize);
268 pCanvas->SetFont(*__pFont);
271 Rectangle overlayRect = Rectangle(0, 0, __sliderOverlayRect.width, __sliderOverlayRect.height);
272 Dimension textDim(0, 0);
275 __pFont->GetTextExtent(text, text.GetLength(), textDim);
277 if (pBgBitmap->IsNinePatchedBitmap())
279 r = pCanvas->DrawNinePatchedBitmap(overlayRect, *pBgBitmap);
283 r = pCanvas->DrawBitmap(overlayRect, *pBgBitmap);
285 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
287 if (pEffectBgBitmap->IsNinePatchedBitmap())
289 r = pCanvas->DrawNinePatchedBitmap(overlayRect, *pEffectBgBitmap);
293 r = pCanvas->DrawBitmap(overlayRect, *pEffectBgBitmap);
295 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
298 __pFont->GetTextExtent(text, text.GetLength(), textDim);
299 textPoint.x = (__sliderOverlayRect.width - textDim.width) / 2;
300 textPoint.y = textPoint.y + ((overlayBodyHeight - textDim.height) / 2);
301 pCanvas->SetForegroundColor(__overlayTextColor);
302 pCanvas->DrawText(textPoint, text);
314 _SliderOverlay::IsActivatedOnOpen(void) const
319 }}} // Tizen::Ui::Controls