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_ColorPickerPresenter.cpp
19 * @brief This is the implementation file for the FUiCtrl_ColorPickerPresenter class.
23 #include <FBaseSysLog.h>
24 #include <FBaseErrorDefine.h>
25 #include <FGrp_BitmapImpl.h>
26 #include "FUiAnim_VisualElement.h"
27 #include "FUiCtrl_ColorPickerPresenter.h"
28 #include "FUiCtrl_ColorPickerModel.h"
29 #include "FUi_AccessibilityElement.h"
30 #include "FUi_UiTouchEvent.h"
31 #include "FUi_ResourceManager.h"
33 using namespace Tizen::Base;
34 using namespace Tizen::Base::Runtime;
35 using namespace Tizen::Graphics;
36 using namespace Tizen::Ui;
37 using namespace Tizen::Ui::Animations;
39 const int ARROW_MOVE_STEP = 5;
40 const int SLIDE_ACTIVATION_TIME = 500;
41 const int SLIDE_MOVE_TIME = 60;
42 const double MAX_VALUE_DEGREE = 100.0;
43 const double MIN_VALUE = 0.0;
44 const double MAX_VALUE = 1.0;
46 namespace Tizen { namespace Ui { namespace Controls
61 _ColorPickerPresenter::_ColorPickerPresenter(_ColorPicker& colorPicker)
62 : __pColorPicker(&colorPicker)
63 , __pColorPickerModel(null)
64 , __eventType(HSL_NOT)
71 , __saturationColor(0)
73 , __pHueSliderBgBitmap(null)
74 , __pCustomBitmap(null)
75 , __pLuminanceSliderBgBitmap(null)
76 , __pSaturationSliderBgBitmap(null)
77 , __pColorNormalReplacementBgBitmap(null)
78 , __pColorPressedReplacementBgBitmap(null)
79 , __pColorDisabledReplacementBgBitmap(null)
80 , __pColorNormalEffectReplacementBgBitmap(null)
81 , __pColorPressedEffectReplacementBgBitmap(null)
82 , __pColorDisabledEffectReplacementBgBitmap(null)
83 , __pLeftArrowNormalBitmap(null)
84 , __pLeftArrowPressedBitmap(null)
85 , __pLeftArrowDisabledBitmap(null)
86 , __pRightArrowNormalBitmap(null)
87 , __pRightArrowPressedBitmap(null)
88 , __pRightArrowDisabledBitmap(null)
89 , __pHandlerBitmap(null)
90 , __pLandscapeHueSliderBgBitmap(null)
91 , __pLandscapeCustomBitmap(null)
92 , __pLandscapeLuminanceSliderBgBitmap(null)
93 , __pLandscapeSaturationSliderBgBitmap(null)
97 _ColorPickerPresenter::~_ColorPickerPresenter(void)
99 __pColorPicker = null;
101 delete __pColorPickerModel;
102 __pColorPickerModel = null;
104 if (__pSlideTimer != null)
106 __pSlideTimer->Cancel();
107 delete __pSlideTimer;
108 __pSlideTimer = null;
111 delete __pHueSliderBgBitmap;
112 __pHueSliderBgBitmap = null;
114 delete __pCustomBitmap;
115 __pCustomBitmap = null;
117 delete __pLuminanceSliderBgBitmap;
118 __pLuminanceSliderBgBitmap = null;
120 delete __pSaturationSliderBgBitmap;
121 __pSaturationSliderBgBitmap = null;
123 delete __pColorNormalReplacementBgBitmap;
124 __pColorNormalReplacementBgBitmap = null;
126 delete __pColorPressedReplacementBgBitmap;
127 __pColorPressedReplacementBgBitmap = null;
129 delete __pColorDisabledReplacementBgBitmap;
130 __pColorDisabledReplacementBgBitmap = null;
132 delete __pColorNormalEffectReplacementBgBitmap;
133 __pColorNormalEffectReplacementBgBitmap = null;
135 delete __pColorPressedEffectReplacementBgBitmap;
136 __pColorPressedEffectReplacementBgBitmap = null;
138 delete __pColorDisabledEffectReplacementBgBitmap;
139 __pColorDisabledEffectReplacementBgBitmap = null;
141 delete __pLeftArrowNormalBitmap;
142 __pLeftArrowNormalBitmap = null;
144 delete __pLeftArrowPressedBitmap;
145 __pLeftArrowPressedBitmap = null;
147 delete __pLeftArrowDisabledBitmap;
148 __pLeftArrowDisabledBitmap = null;
150 delete __pRightArrowNormalBitmap;
151 __pRightArrowNormalBitmap = null;
153 delete __pRightArrowPressedBitmap;
154 __pRightArrowPressedBitmap = null;
156 delete __pRightArrowDisabledBitmap;
157 __pRightArrowDisabledBitmap = null;
159 delete __pHandlerBitmap;
160 __pHandlerBitmap = null;
162 delete __pLandscapeHueSliderBgBitmap;
163 __pLandscapeHueSliderBgBitmap = null;
165 delete __pLandscapeCustomBitmap;
166 __pLandscapeCustomBitmap = null;
168 delete __pLandscapeLuminanceSliderBgBitmap;
169 __pLandscapeLuminanceSliderBgBitmap = null;
171 delete __pLandscapeSaturationSliderBgBitmap;
172 __pLandscapeSaturationSliderBgBitmap = null;
175 _ColorPickerPresenter*
176 _ColorPickerPresenter::CreateInstanceN(_ColorPicker& colorPicker)
178 _ColorPickerPresenter* pColorPickerPresenter = new (std::nothrow) _ColorPickerPresenter(colorPicker);
179 SysTryReturn(NID_UI_CTRL, (pColorPickerPresenter != null), null, E_OUT_OF_MEMORY,
180 "[E_OUT_OF_MEMORY] Memory allocation failed.");
182 result r = GetLastResult();
183 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
185 pColorPickerPresenter->__pColorPickerModel = _ColorPickerModel::CreateInstanceN();
187 SysTryCatch(NID_UI_CTRL, (pColorPickerPresenter->__pColorPickerModel != null), , r,
188 "[%s] Propagating.", GetErrorMessage(r));
190 r = pColorPickerPresenter->LoadResource();
191 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] A system error has occurred. Failed to load the ColorPicker resources.");
193 pColorPickerPresenter->__pColorPickerModel->SetHue(MIN_VALUE);
194 pColorPickerPresenter->__pColorPickerModel->SetSaturation(MAX_VALUE);
195 pColorPickerPresenter->__pColorPickerModel->SetLuminance(MIN_VALUE);
197 return pColorPickerPresenter;
199 delete pColorPickerPresenter;
204 _ColorPickerPresenter::CreateHandlerN(_VisualElement& rootElement, _ColorPickerComponentType handlerType)
206 Canvas* pCanvas = null;
207 int handlerWidth = 0;
208 int handlerHeight = 0;
209 result r = E_SUCCESS;
210 Rectangle handlerBounds = __componentBounds[handlerType];
211 Rectangle bounds = __pColorPicker->GetClientBounds();
213 _VisualElement* pHandler = new (std::nothrow) _VisualElement;
214 SysTryReturn(NID_UI_CTRL, (pHandler != null), null, E_OUT_OF_MEMORY,
215 "[E_OUT_OF_MEMORY] Memory allocation failed.");
217 r = pHandler->Construct();
218 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
220 GET_SHAPE_CONFIG(COLORPICKER::HANDLER_WIDTH, _CONTROL_ORIENTATION_PORTRAIT, handlerWidth);
221 GET_SHAPE_CONFIG(COLORPICKER::HANDLER_HEIGHT, _CONTROL_ORIENTATION_PORTRAIT, handlerHeight);
223 pHandler->SetImplicitAnimationEnabled(false);
225 pHandler->SetBounds(FloatRectangle(bounds.x + handlerBounds.x, bounds.y + handlerBounds.y, handlerWidth, handlerHeight));
226 pHandler->SetShowState(true);
227 pHandler->SetBackBufferEnabled(true);
229 pHandler->SetRedrawOnResizeEnabled(true);
230 pHandler->SetSurfaceOpaque(false);
232 r = rootElement.AttachChild(*pHandler);
233 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
235 pCanvas = pHandler->GetCanvasN();
237 SysTryCatch(NID_UI_CTRL, (pCanvas != null), , r, "[%s] Propagating.", GetErrorMessage(r));
239 pCanvas->SetBackgroundColor(Color());
241 DrawResourceBitmap(*pCanvas, Rectangle(0, 0, handlerWidth, handlerHeight), __pHandlerBitmap);
252 _ColorPickerPresenter::Draw(void)
254 Canvas* pCanvas = __pColorPicker->GetCanvasN();
257 SetLastResult(E_SYSTEM);
261 pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
265 DrawArrowButtons(*pCanvas);
267 DrawHueSlider(*pCanvas);
268 MoveHandler(HUE_HANDLER);
270 DrawSaturationSlider(*pCanvas);
271 MoveHandler(SAT_HANDLER);
273 DrawLuminanceSlider(*pCanvas);
274 MoveHandler(LUM_HANDLER);
283 _ColorPickerPresenter::GetColor(void) const
285 return __pColorPickerModel->GetColor();
289 _ColorPickerPresenter::GetHue(void) const
291 return __pColorPickerModel->GetHue() * MAX_VALUE_DEGREE;
295 _ColorPickerPresenter::GetSaturation(void) const
297 return __pColorPickerModel->GetSaturation() * MAX_VALUE_DEGREE;
301 _ColorPickerPresenter::GetLuminance(void) const
303 return __pColorPickerModel->GetLuminance() * MAX_VALUE_DEGREE;
307 _ColorPickerPresenter::SetColor(const Color& color)
309 __pColorPickerModel->SetColor(color);
310 SetHandlerPositionByRatio(HUE_HANDLER, __pColorPickerModel->GetHue());
311 SetHandlerPositionByRatio(SAT_HANDLER, __pColorPickerModel->GetSaturation());
312 SetHandlerPositionByRatio(LUM_HANDLER, __pColorPickerModel->GetLuminance());
318 _ColorPickerPresenter::SetHue(int hue)
320 SysTryReturn(NID_UI_CTRL, (hue <= MAX_VALUE_DEGREE && hue >= 0), E_INVALID_ARG, E_INVALID_ARG,
321 "[E_INVALID_ARG] Invalid argument(s) is used. Hue value is invalid.");
323 __pColorPickerModel->SetHue((double)hue / MAX_VALUE_DEGREE);
324 SetHandlerPositionByRatio(HUE_HANDLER, __pColorPickerModel->GetHue());
330 _ColorPickerPresenter::SetSaturation(int saturation)
332 SysTryReturn(NID_UI_CTRL, (saturation <= MAX_VALUE_DEGREE && saturation >= 0), E_INVALID_ARG, E_INVALID_ARG,
333 "[E_INVALID_ARG] Invalid argument(s) is used. Saturation value is invalid.");
335 __pColorPickerModel->SetSaturation((double)saturation / MAX_VALUE_DEGREE);
336 SetHandlerPositionByRatio(SAT_HANDLER, __pColorPickerModel->GetSaturation());
342 _ColorPickerPresenter::SetLuminance(int luminance)
344 SysTryReturn(NID_UI_CTRL, (luminance <= MAX_VALUE_DEGREE && luminance >= 0), E_INVALID_ARG, E_INVALID_ARG,
345 "[E_INVALID_ARG] Invalid argument(s) is used. Luminance value is invalid.");
347 __pColorPickerModel->SetLuminance((double)luminance / MAX_VALUE_DEGREE);
348 SetHandlerPositionByRatio(LUM_HANDLER, __pColorPickerModel->GetLuminance());
354 _ColorPickerPresenter::LoadDrawingProperties(const Rectangle& controlBounds)
356 const int _BLOCK_COUNT = 3;
357 int arrowButtonLeftMargin = 0;
358 int arrowButtonTopMargin = 0;
359 int barTopMargin = 0;
360 int barLeftMargin = 0;
361 int sliderHeight = 0;
364 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
366 GET_SHAPE_CONFIG(COLORPICKER::ARROW_BUTTON_LEFT_MARGIN, orientation, arrowButtonLeftMargin);
367 GET_SHAPE_CONFIG(COLORPICKER::ARROW_BUTON_TOP_MARGIN, orientation, arrowButtonTopMargin);
368 GET_SHAPE_CONFIG(COLORPICKER::BAR_TOP_MARGIN, orientation, barTopMargin);
369 GET_SHAPE_CONFIG(COLORPICKER::BAR_LEFT_MARGIN, orientation, barLeftMargin);
370 GET_SHAPE_CONFIG(COLORPICKER::SLIDER_HEIGHT, orientation, sliderHeight);
371 GET_FIXED_VALUE_CONFIG(COLORPICKER::BLOCK_MARGIN, orientation, __blockMargin);
372 GET_SHAPE_CONFIG(COLORPICKER::BLOCK_HEIGHT, orientation, __blockHeight);
373 GET_SHAPE_CONFIG(COLORPICKER::DIVIDER_MARGIN, orientation, __dividerMargin);
374 GET_SHAPE_CONFIG(COLORPICKER::DIVIDER_WIDTH, orientation, __dividerWidth);
376 __topMargin = (controlBounds.height - (__blockMargin + __blockHeight) * _BLOCK_COUNT + __blockMargin) / 2;
383 int arrowButtonWidth = 0;
384 int arrowButtonHeight = 0;
386 GET_SHAPE_CONFIG(COLORPICKER::ARROW_BUTTON_WIDTH, orientation, arrowButtonWidth);
387 GET_SHAPE_CONFIG(COLORPICKER::ARROW_BUTTON_HEIGHT, orientation, arrowButtonHeight);
389 int handlerWidth = 0;
390 int handlerHeight = 0;
392 GET_SHAPE_CONFIG(COLORPICKER::HANDLER_WIDTH, orientation, handlerWidth);
393 GET_SHAPE_CONFIG(COLORPICKER::HANDLER_HEIGHT, orientation, handlerHeight);
395 int btnStartY = arrowButtonTopMargin + __topMargin;
396 int barStartY = barTopMargin + __topMargin;
398 GET_SHAPE_CONFIG(COLORPICKER::BAR_WIDTH, orientation, sliderWidth);
400 //Set contents position
401 __componentBounds[HUE_ARROWLEFT].SetBounds(arrowButtonLeftMargin, btnStartY, arrowButtonWidth, arrowButtonHeight);
403 __componentBounds[HUE_BAR].SetBounds(arrowButtonLeftMargin + arrowButtonWidth + barLeftMargin, barStartY, sliderWidth, sliderHeight);
405 __componentBounds[HUE_ARROWRIGHT].SetBounds(__componentBounds[HUE_BAR].x + sliderWidth + barLeftMargin, btnStartY,
406 arrowButtonWidth, arrowButtonHeight);
408 btnStartY += __blockHeight + __blockMargin;
409 __componentBounds[SAT_ARROWLEFT].SetBounds(arrowButtonLeftMargin, btnStartY, arrowButtonWidth, arrowButtonHeight);
411 __componentBounds[SAT_BAR].SetBounds(arrowButtonLeftMargin + arrowButtonWidth + barLeftMargin, barStartY + __blockHeight + __blockMargin,
412 sliderWidth, sliderHeight);
414 __componentBounds[SAT_ARROWRIGHT].SetBounds(__componentBounds[SAT_BAR].x + sliderWidth + barLeftMargin, btnStartY,
415 arrowButtonWidth, arrowButtonHeight);
417 btnStartY += __blockHeight + __blockMargin;
418 __componentBounds[LUM_ARROWLEFT].SetBounds(arrowButtonLeftMargin, btnStartY, arrowButtonWidth, arrowButtonHeight);
420 __componentBounds[LUM_BAR].SetBounds(arrowButtonLeftMargin + arrowButtonWidth + barLeftMargin, barStartY + (__blockHeight + __blockMargin) * 2,
421 sliderWidth, sliderHeight);
423 __componentBounds[LUM_ARROWRIGHT].SetBounds(__componentBounds[LUM_BAR].x + sliderWidth + barLeftMargin, btnStartY,
424 arrowButtonWidth, arrowButtonHeight);
426 int differentialY = (handlerHeight - sliderHeight) / 2;
428 __componentBounds[HUE_HANDLER].SetBounds(
429 __componentBounds[HUE_BAR].x + (__componentBounds[HUE_BAR].width - handlerWidth) * __pColorPickerModel->GetHue(),
430 __componentBounds[HUE_BAR].y - differentialY,
434 __componentBounds[SAT_HANDLER].SetBounds(
435 __componentBounds[SAT_BAR].x + (__componentBounds[SAT_BAR].width - handlerWidth) * (MAX_VALUE - __pColorPickerModel->GetSaturation()),
436 __componentBounds[SAT_BAR].y - differentialY,
440 __componentBounds[LUM_HANDLER].SetBounds(
441 __componentBounds[LUM_BAR].x + (__componentBounds[LUM_BAR].width - handlerWidth) * __pColorPickerModel->GetLuminance(),
442 __componentBounds[LUM_BAR].y - differentialY,
446 // Set bounds of AccessibilityElement
447 _AccessibilityElement* pElement = null;
448 for (int elementId = HUE_BAR; elementId <= LUM_ARROWRIGHT; elementId++)
450 pElement = __pColorPicker->GetAccessibilityElement(elementId);
451 if (pElement != null)
453 pElement->SetBounds(__componentBounds[elementId]);
461 _ColorPickerPresenter::OnChangeLayout(_ControlOrientation orientation)
463 Dimension colorPickerSize;
464 result r = GET_DIMENSION_CONFIG(COLORPICKER::DEFAULT_SIZE, orientation, colorPickerSize);
465 if (r == E_SUCCESS && colorPickerSize != __pColorPicker->GetSize())
467 __pColorPicker->SetResizable(true);
468 __pColorPicker->SetSize(colorPickerSize);
469 __pColorPicker->SetResizable(false);
475 _ColorPickerPresenter::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
477 Point point = touchinfo.GetCurrentPosition();
478 __eventType = GetTouchActionType(point);
480 if (__eventType >= HUE_ARROWLEFT && __eventType <= LUM_ARROWRIGHT)
482 Rectangle buttonBounds = __componentBounds[__eventType];
483 Canvas* pCanvas = __pColorPicker->GetCanvasN(buttonBounds);
488 DrawArrowButton(*pCanvas, buttonBounds, true, IsLeftButton(__eventType));
490 __pColorPicker->UpdateView();
494 if (__pSlideTimer == null)
496 __pSlideTimer = new (std::nothrow) Timer;
497 if (__pSlideTimer == null)
502 result r = __pSlideTimer->Construct(*this);
505 delete __pSlideTimer;
506 __pSlideTimer = null;
511 __pSlideTimer->Start(SLIDE_ACTIVATION_TIME);
513 else if (__eventType >= HUE_HANDLER && __eventType <= LUM_HANDLER)
515 TouchHandler(point.x);
522 _ColorPickerPresenter::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
524 if (__eventType >= HUE_HANDLER && __eventType <= LUM_HANDLER)
526 TouchHandler(touchinfo.GetCurrentPosition().x);
533 _ColorPickerPresenter::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
535 if (__pSlideTimer != null)
537 __pSlideTimer->Cancel();
540 if (__eventType >= HUE_HANDLER && __eventType <= LUM_HANDLER)
542 TouchHandler(touchinfo.GetCurrentPosition().x);
543 __eventType = HSL_NOT;
547 __eventType = HSL_NOT;
548 __pColorPicker->Draw();
555 _ColorPickerPresenter::OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
557 return OnTouchReleased(source, touchinfo);
561 _ColorPickerPresenter::OnTimerExpired(Timer& timer)
563 if (__eventType >= HUE_ARROWLEFT && __eventType <= LUM_ARROWRIGHT)
568 timer.Start(SLIDE_MOVE_TIME);
572 _ColorPickerPresenter::LoadResource(void)
574 result r = E_SUCCESS;
575 Color buttonNormalColor;
576 Color buttonPressedColor;
577 Color buttonDisabledColor;
578 Color buttonBgNormalColor;
579 Color buttonBgPressedColor;
580 Color buttonBgDisabledColor;
581 Bitmap* pBgNormalBitmap = null;
582 Bitmap* pBgPressedBitmap = null;
583 Bitmap* pBgDisabledBitmap = null;
584 Bitmap* pBgEffectNormalBitmap = null;
585 Bitmap* pBgEffectPressedBitmap = null;
586 Bitmap* pBgEffectDisabledBitmap = null;
587 Bitmap* pLeftArrowNormalBitmap = null;
588 Bitmap* pLeftArrowPressedBitmap = null;
589 Bitmap* pLeftArrowDisabledBitmap = null;
590 Bitmap* pRightArrowNormalBitmap = null;
591 Bitmap* pRightArrowPressedBitmap = null;
592 Bitmap* pRightArrowDisabledBitmap = null;
594 r = GET_COLOR_CONFIG(COLORPICKER::ARROW_BUTTON_BG_NORMAL, buttonBgNormalColor);
595 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
597 r = GET_COLOR_CONFIG(COLORPICKER::ARROW_BUTTON_BG_PRESSED, buttonBgPressedColor);
598 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
600 r = GET_COLOR_CONFIG(COLORPICKER::ARROW_BUTTON_BG_DISABLED, buttonBgDisabledColor);
601 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
603 r = GET_COLOR_CONFIG(COLORPICKER::ARROW_BUTTON_NORMAL, buttonNormalColor);
604 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
606 r = GET_COLOR_CONFIG(COLORPICKER::ARROW_BUTTON_PRESSED, buttonPressedColor);
607 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
609 r = GET_COLOR_CONFIG(COLORPICKER::ARROW_BUTTON_DISABLED, buttonDisabledColor);
610 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
612 r = GET_BITMAP_CONFIG_N(COLORPICKER::HUE_BAR_PORTRAIT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pHueSliderBgBitmap);
613 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
615 r = GET_BITMAP_CONFIG_N(COLORPICKER::BAR_BG_PORTRAIT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pCustomBitmap);
616 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
618 r = GET_BITMAP_CONFIG_N(COLORPICKER::LUMINANCE_BAR_PORTRAIT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pLuminanceSliderBgBitmap);
619 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
621 r = GET_BITMAP_CONFIG_N(COLORPICKER::SATURATION_BAR_PORTRAIT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pSaturationSliderBgBitmap);
622 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
624 r = GET_BITMAP_CONFIG_N(COLORPICKER::HUE_BAR_LANDSCAPE_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pLandscapeHueSliderBgBitmap);
625 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
627 r = GET_BITMAP_CONFIG_N(COLORPICKER::BAR_BG_LANDSCAPE_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pLandscapeCustomBitmap);
628 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
630 r = GET_BITMAP_CONFIG_N(COLORPICKER::LUMINANCE_BAR_LANDSCAPE_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pLandscapeLuminanceSliderBgBitmap);
631 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
633 r = GET_BITMAP_CONFIG_N(COLORPICKER::SATURATION_BAR__LANDSCAPE_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pLandscapeSaturationSliderBgBitmap);
634 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
636 r = GET_BITMAP_CONFIG_N(COLORPICKER::ARROW_BUTTON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBgNormalBitmap);
637 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
639 r = GET_BITMAP_CONFIG_N(COLORPICKER::ARROW_BUTTON_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pBgPressedBitmap);
640 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
642 r = GET_BITMAP_CONFIG_N(COLORPICKER::ARROW_BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pBgDisabledBitmap);
643 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
645 r = GET_BITMAP_CONFIG_N(COLORPICKER::ARROW_BUTTON_BG_EFFECT_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pBgEffectNormalBitmap);
646 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
648 r = GET_BITMAP_CONFIG_N(COLORPICKER::ARROW_BUTTON_BG_EFFECT_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pBgEffectPressedBitmap);
649 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
651 r = GET_BITMAP_CONFIG_N(COLORPICKER::ARROW_BUTTON_BG_EFFECT_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pBgEffectDisabledBitmap);
652 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
654 r = GET_BITMAP_CONFIG_N(COLORPICKER::LEFT_ARROW_BUTTON_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pLeftArrowNormalBitmap);
655 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
657 r = GET_BITMAP_CONFIG_N(COLORPICKER::LEFT_ARROW_BUTTON_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pLeftArrowPressedBitmap);
658 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
660 r = GET_BITMAP_CONFIG_N(COLORPICKER::LEFT_ARROW_BUTTON_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pLeftArrowDisabledBitmap);
661 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
663 r = GET_BITMAP_CONFIG_N(COLORPICKER::RIGHT_ARROW_BUTTON_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, pRightArrowNormalBitmap);
664 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
666 r = GET_BITMAP_CONFIG_N(COLORPICKER::RIGHT_ARROW_BUTTON_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, pRightArrowPressedBitmap);
667 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
669 r = GET_BITMAP_CONFIG_N(COLORPICKER::RIGHT_ARROW_BUTTON_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, pRightArrowDisabledBitmap);
670 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
672 __pColorNormalReplacementBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBgNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonBgNormalColor);
674 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
676 __pColorPressedReplacementBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBgPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonBgPressedColor);
678 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
680 __pColorDisabledReplacementBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBgDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonBgDisabledColor);
682 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
684 __pColorNormalEffectReplacementBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBgEffectNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonBgNormalColor);
686 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
688 __pColorPressedEffectReplacementBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBgEffectPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonBgPressedColor);
690 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
692 __pColorDisabledEffectReplacementBgBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pBgEffectDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonBgDisabledColor);
694 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
696 __pLeftArrowNormalBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pLeftArrowNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonNormalColor);
698 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
700 __pLeftArrowPressedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pLeftArrowPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonPressedColor);
702 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
704 __pLeftArrowDisabledBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pLeftArrowDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonDisabledColor);
706 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
708 __pRightArrowNormalBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pRightArrowNormalBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonNormalColor);
710 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
712 __pRightArrowPressedBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pRightArrowPressedBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonPressedColor);
714 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
716 __pRightArrowDisabledBitmap = _BitmapImpl::GetColorReplacedBitmapN(*pRightArrowDisabledBitmap, Color::GetColor(COLOR_ID_MAGENTA), buttonDisabledColor);
718 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
720 r = GET_BITMAP_CONFIG_N(COLORPICKER::HANDLER_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, __pHandlerBitmap);
721 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , r, "[%s] Propagating.", GetErrorMessage(r));
723 delete pBgNormalBitmap;
724 pBgNormalBitmap = null;
726 delete pBgPressedBitmap;
727 pBgPressedBitmap = null;
729 delete pBgDisabledBitmap;
730 pBgDisabledBitmap = null;
732 delete pBgEffectNormalBitmap;
733 pBgEffectNormalBitmap = null;
735 delete pBgEffectPressedBitmap;
736 pBgEffectPressedBitmap = null;
738 delete pBgEffectDisabledBitmap;
739 pBgEffectDisabledBitmap = null;
741 delete pLeftArrowNormalBitmap;
742 pLeftArrowNormalBitmap = null;
744 delete pLeftArrowPressedBitmap;
745 pLeftArrowPressedBitmap = null;
747 delete pLeftArrowDisabledBitmap;
748 pLeftArrowDisabledBitmap = null;
750 delete pRightArrowNormalBitmap;
751 pRightArrowNormalBitmap = null;
753 delete pRightArrowPressedBitmap;
754 pRightArrowPressedBitmap = null;
756 delete pRightArrowDisabledBitmap;
757 pRightArrowDisabledBitmap = null;
762 delete __pHueSliderBgBitmap;
763 __pHueSliderBgBitmap = null;
765 delete __pCustomBitmap;
766 __pCustomBitmap = null;
768 delete __pLuminanceSliderBgBitmap;
769 __pLuminanceSliderBgBitmap = null;
771 delete __pSaturationSliderBgBitmap;
772 __pSaturationSliderBgBitmap = null;
774 delete pBgNormalBitmap;
775 pBgNormalBitmap = null;
777 delete pBgPressedBitmap;
778 pBgPressedBitmap = null;
780 delete pBgDisabledBitmap;
781 pBgDisabledBitmap = null;
783 delete pBgEffectNormalBitmap;
784 pBgEffectNormalBitmap = null;
786 delete pBgEffectPressedBitmap;
787 pBgEffectPressedBitmap = null;
789 delete pBgEffectDisabledBitmap;
790 pBgEffectDisabledBitmap = null;
792 delete pLeftArrowNormalBitmap;
793 pLeftArrowNormalBitmap = null;
795 delete pLeftArrowPressedBitmap;
796 pLeftArrowPressedBitmap = null;
798 delete pLeftArrowDisabledBitmap;
799 pLeftArrowDisabledBitmap = null;
801 delete pRightArrowNormalBitmap;
802 pRightArrowNormalBitmap = null;
804 delete pRightArrowPressedBitmap;
805 pRightArrowPressedBitmap = null;
807 delete pRightArrowDisabledBitmap;
808 pRightArrowDisabledBitmap = null;
810 delete __pColorNormalReplacementBgBitmap;
811 __pColorNormalReplacementBgBitmap = null;
813 delete __pColorPressedReplacementBgBitmap;
814 __pColorPressedReplacementBgBitmap = null;
816 delete __pColorDisabledReplacementBgBitmap;
817 __pColorDisabledReplacementBgBitmap = null;
819 delete __pColorNormalEffectReplacementBgBitmap;
820 __pColorNormalEffectReplacementBgBitmap = null;
822 delete __pColorPressedEffectReplacementBgBitmap;
823 __pColorPressedEffectReplacementBgBitmap = null;
825 delete __pColorDisabledEffectReplacementBgBitmap;
826 __pColorDisabledEffectReplacementBgBitmap = null;
828 delete __pLeftArrowNormalBitmap;
829 __pLeftArrowNormalBitmap = null;
831 delete __pLeftArrowPressedBitmap;
832 __pLeftArrowPressedBitmap = null;
834 delete __pLeftArrowDisabledBitmap;
835 __pLeftArrowDisabledBitmap = null;
837 delete __pRightArrowNormalBitmap;
838 __pRightArrowNormalBitmap = null;
840 delete __pRightArrowPressedBitmap;
841 __pRightArrowPressedBitmap = null;
843 delete __pRightArrowDisabledBitmap;
844 __pRightArrowDisabledBitmap = null;
850 _ColorPickerPresenter::DrawHueSlider(Canvas& canvas)
852 result r = E_SUCCESS;
854 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
856 if (__pHueSliderBgBitmap != null && orientation == _CONTROL_ORIENTATION_PORTRAIT)
858 r = DrawResourceBitmap(canvas, __componentBounds[HUE_BAR], __pHueSliderBgBitmap);
859 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
861 else if (__pLandscapeHueSliderBgBitmap != null && orientation == _CONTROL_ORIENTATION_LANDSCAPE)
863 r = DrawResourceBitmap(canvas, __componentBounds[HUE_BAR], __pLandscapeHueSliderBgBitmap);
864 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
871 _ColorPickerPresenter::DrawLuminanceSlider(Canvas& canvas)
873 result r = E_SUCCESS;
874 Bitmap* pColorReplacementBitmap = null;
876 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
878 if (__pCustomBitmap != null && __pLuminanceSliderBgBitmap != null && orientation == _CONTROL_ORIENTATION_PORTRAIT)
880 pColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*__pCustomBitmap, Color::GetColor(COLOR_ID_MAGENTA), __pColorPickerModel->GetSaturationColor());
882 SysTryReturn(NID_UI_CTRL, pColorReplacementBitmap, E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
884 r = DrawResourceBitmap(canvas, __componentBounds[LUM_BAR], pColorReplacementBitmap);
885 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
887 r = DrawResourceBitmap(canvas, __componentBounds[LUM_BAR], __pLuminanceSliderBgBitmap);
888 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
890 else if (__pLandscapeCustomBitmap != null && __pLandscapeLuminanceSliderBgBitmap != null && orientation == _CONTROL_ORIENTATION_LANDSCAPE)
892 pColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*__pLandscapeCustomBitmap, Color::GetColor(COLOR_ID_MAGENTA), __pColorPickerModel->GetSaturationColor());
894 SysTryReturn(NID_UI_CTRL, pColorReplacementBitmap, E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
896 r = DrawResourceBitmap(canvas, __componentBounds[LUM_BAR], pColorReplacementBitmap);
897 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
899 r = DrawResourceBitmap(canvas, __componentBounds[LUM_BAR], __pLandscapeLuminanceSliderBgBitmap);
900 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
903 __saturationColor = __pColorPickerModel->GetSaturationColor();
905 delete pColorReplacementBitmap;
906 pColorReplacementBitmap = null;
912 delete pColorReplacementBitmap;
913 pColorReplacementBitmap = null;
919 _ColorPickerPresenter::DrawSaturationSlider(Canvas& canvas)
921 result r = E_SUCCESS;
922 Bitmap* pColorReplacementBitmap = null;
923 _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
925 if (__pCustomBitmap != null && __pSaturationSliderBgBitmap != null && orientation == _CONTROL_ORIENTATION_PORTRAIT)
927 pColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*__pCustomBitmap, Color::GetColor(COLOR_ID_MAGENTA), __pColorPickerModel->GetHueColor());
929 SysTryReturn(NID_UI_CTRL, pColorReplacementBitmap, E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
931 r = DrawResourceBitmap(canvas, __componentBounds[SAT_BAR], pColorReplacementBitmap);
932 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
934 r = DrawResourceBitmap(canvas, __componentBounds[SAT_BAR], __pSaturationSliderBgBitmap);
935 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
937 else if (__pLandscapeCustomBitmap != null && __pLandscapeSaturationSliderBgBitmap != null && orientation == _CONTROL_ORIENTATION_LANDSCAPE)
939 pColorReplacementBitmap = _BitmapImpl::GetColorReplacedBitmapN(*__pLandscapeCustomBitmap, Color::GetColor(COLOR_ID_MAGENTA), __pColorPickerModel->GetHueColor());
941 SysTryReturn(NID_UI_CTRL, pColorReplacementBitmap, E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
943 r = DrawResourceBitmap(canvas, __componentBounds[SAT_BAR], pColorReplacementBitmap);
944 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
946 r = DrawResourceBitmap(canvas, __componentBounds[SAT_BAR], __pLandscapeSaturationSliderBgBitmap);
947 SysTryCatch(NID_UI_CTRL, (r == E_SUCCESS), , E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
950 __hueColor = __pColorPickerModel->GetHueColor();
952 delete pColorReplacementBitmap;
953 pColorReplacementBitmap = null;
959 delete pColorReplacementBitmap;
960 pColorReplacementBitmap = null;
966 _ColorPickerPresenter::DrawLine(Canvas& canvas)
968 if (__blockMargin <= 0)
973 result r = E_SUCCESS;
974 Color foregroundColor = canvas.GetForegroundColor();
976 r = GET_COLOR_CONFIG(COLORPICKER::DIVIDER_NORMAL, lineColor);
977 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
979 canvas.SetForegroundColor(lineColor);
980 canvas.SetLineWidth(__blockMargin);
982 r = canvas.DrawLine(Point(__dividerMargin, __topMargin + __blockHeight),
983 Point(__dividerMargin + __dividerWidth, __topMargin + __blockHeight));
984 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
986 r = canvas.DrawLine(Point(__dividerMargin, __topMargin + __blockHeight * 2 + __blockMargin),
987 Point(__dividerMargin + __dividerWidth, __topMargin + __blockHeight * 2 + __blockMargin));
988 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(r));
990 canvas.SetForegroundColor(foregroundColor);
996 _ColorPickerPresenter::DrawArrowButton(Canvas& canvas, const Rectangle& rcButton, bool isSelected, bool drawLeftButton)
998 result r = E_SUCCESS;
1000 if (__pColorPicker->IsEnabled() == false)
1002 r = DrawResourceBitmap(canvas, rcButton, __pColorDisabledEffectReplacementBgBitmap);
1003 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1005 r = DrawResourceBitmap(canvas, rcButton, __pColorDisabledReplacementBgBitmap);
1006 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1010 r = DrawResourceBitmap(canvas, rcButton, __pLeftArrowDisabledBitmap);
1011 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1015 r = DrawResourceBitmap(canvas, rcButton, __pRightArrowDisabledBitmap);
1016 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1019 else if (isSelected)
1021 r = DrawResourceBitmap(canvas, rcButton, __pColorPressedEffectReplacementBgBitmap);
1022 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1024 r = DrawResourceBitmap(canvas, rcButton, __pColorPressedReplacementBgBitmap);
1025 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1029 r = DrawResourceBitmap(canvas, rcButton, __pLeftArrowPressedBitmap);
1030 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1034 r = DrawResourceBitmap(canvas, rcButton, __pRightArrowPressedBitmap);
1035 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1040 r = DrawResourceBitmap(canvas, rcButton, __pColorNormalEffectReplacementBgBitmap);
1041 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1043 r = DrawResourceBitmap(canvas, rcButton, __pColorNormalReplacementBgBitmap);
1044 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1048 r = DrawResourceBitmap(canvas, rcButton, __pLeftArrowNormalBitmap);
1049 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1053 r = DrawResourceBitmap(canvas, rcButton, __pRightArrowNormalBitmap);
1054 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
1062 _ColorPickerPresenter::DrawArrowButtons(Canvas& canvas)
1064 DrawArrowButton(canvas, __componentBounds[HUE_ARROWLEFT], __eventType == HUE_ARROWLEFT, true);
1065 DrawArrowButton(canvas, __componentBounds[HUE_ARROWRIGHT], __eventType == HUE_ARROWRIGHT, false);
1066 DrawArrowButton(canvas, __componentBounds[SAT_ARROWLEFT], __eventType == SAT_ARROWLEFT, true);
1067 DrawArrowButton(canvas, __componentBounds[SAT_ARROWRIGHT], __eventType == SAT_ARROWRIGHT, false);
1068 DrawArrowButton(canvas, __componentBounds[LUM_ARROWLEFT], __eventType == LUM_ARROWLEFT, true);
1069 DrawArrowButton(canvas, __componentBounds[LUM_ARROWRIGHT], __eventType == LUM_ARROWRIGHT, false);
1075 _ColorPickerPresenter::MoveHandler(_ColorPickerComponentType handlerType)
1077 _VisualElement* pHandler = null;
1078 result r = E_SUCCESS;
1080 switch (handlerType)
1083 pHandler = __pColorPicker->GetHueHandler();
1086 pHandler = __pColorPicker->GetSaturationHandler();
1089 pHandler = __pColorPicker->GetLuminanceHandler();
1096 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Handler event type is invalid.");
1098 SysTryReturnResult(NID_UI_CTRL, pHandler != null, E_SYSTEM, "A system error has occurred. Failed to get the handler.");
1100 Rectangle bounds = __pColorPicker->GetClientBounds();
1101 Rectangle& handlerBounds = __componentBounds[handlerType];
1102 pHandler->SetBounds(FloatRectangle(bounds.x + handlerBounds.x, bounds.y + handlerBounds.y, handlerBounds.width, handlerBounds.height));
1108 _ColorPickerPresenter::TouchButton(void)
1110 result r = E_SUCCESS;
1112 switch (__eventType)
1115 SetHandlerPosition(HUE_HANDLER, __componentBounds[HUE_HANDLER].x - ARROW_MOVE_STEP);
1116 MoveHandler(HUE_HANDLER);
1117 ChangeColorFromCurrentHandlerPosition(HUE_HANDLER);
1119 case HUE_ARROWRIGHT:
1120 SetHandlerPosition(HUE_HANDLER, __componentBounds[HUE_HANDLER].x + ARROW_MOVE_STEP);
1121 MoveHandler(HUE_HANDLER);
1122 ChangeColorFromCurrentHandlerPosition(HUE_HANDLER);
1125 SetHandlerPosition(SAT_HANDLER, __componentBounds[SAT_HANDLER].x - ARROW_MOVE_STEP);
1126 MoveHandler(SAT_HANDLER);
1127 ChangeColorFromCurrentHandlerPosition(SAT_HANDLER);
1129 case SAT_ARROWRIGHT:
1130 SetHandlerPosition(SAT_HANDLER, __componentBounds[SAT_HANDLER].x + ARROW_MOVE_STEP);
1131 MoveHandler(SAT_HANDLER);
1132 ChangeColorFromCurrentHandlerPosition(SAT_HANDLER);
1135 SetHandlerPosition(LUM_HANDLER, __componentBounds[LUM_HANDLER].x - ARROW_MOVE_STEP);
1136 MoveHandler(LUM_HANDLER);
1137 ChangeColorFromCurrentHandlerPosition(LUM_HANDLER);
1139 case LUM_ARROWRIGHT:
1140 SetHandlerPosition(LUM_HANDLER, __componentBounds[LUM_HANDLER].x + ARROW_MOVE_STEP);
1141 MoveHandler(LUM_HANDLER);
1142 ChangeColorFromCurrentHandlerPosition(LUM_HANDLER);
1145 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(s) is used. Arrow button type is invalid.");
1154 _ColorPickerPresenter::TouchHandler(int x)
1156 result r = E_SUCCESS;
1158 switch (__eventType)
1165 SetHandlerPosition(__eventType, x - __componentBounds[__eventType].width / 2);
1166 MoveHandler(__eventType);
1167 ChangeColorFromCurrentHandlerPosition(__eventType);
1170 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(s) is used. Handler event type is invalid.");
1179 _ColorPickerPresenter::SetHandlerPosition(_ColorPickerComponentType handlerType, int position)
1181 result r = E_SUCCESS;
1183 switch (handlerType)
1191 Rectangle& barBounds = GetBarBoundsFromHandler(handlerType);
1192 if (position < barBounds.x)
1194 position = barBounds.x;
1196 else if (position > (barBounds.x + barBounds.width - __componentBounds[handlerType].width))
1198 position = barBounds.x + barBounds.width - __componentBounds[handlerType].width;
1201 __componentBounds[handlerType].x = position;
1205 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(s) is used. Handler event type is invalid.");
1214 _ColorPickerPresenter::SetHandlerPositionByRatio(_ColorPickerComponentType handlerType, double ratio)
1216 result r = E_SUCCESS;
1217 Rectangle& barBounds = GetBarBoundsFromHandler(handlerType);
1218 switch (handlerType)
1221 __componentBounds[handlerType].x = barBounds.x + (barBounds.width - __componentBounds[handlerType].width) * ratio;
1225 __componentBounds[handlerType].x = barBounds.x + (barBounds.width - __componentBounds[handlerType].width) * (MAX_VALUE - ratio);
1230 __componentBounds[handlerType].x = barBounds.x + (barBounds.width - __componentBounds[handlerType].width) * ratio;
1234 SysLogException(NID_UI_CTRL, E_INVALID_ARG, "[E_INVALID_ARG] Invalid argument(s) is used. Handler event type is invalid.");
1243 _ColorPickerPresenter::ChangeColorFromCurrentHandlerPosition(_ColorPickerComponentType handlerType)
1245 result r = E_SUCCESS;
1246 _AccessibilityElement* pElement = null;
1249 switch (handlerType)
1252 __pColorPickerModel->SetHue((double)(__componentBounds[HUE_HANDLER].x - __componentBounds[HUE_BAR].x)
1253 / (double)(__componentBounds[HUE_BAR].width - __componentBounds[HUE_HANDLER].width));
1255 pElement = __pColorPicker->GetAccessibilityElement(HUE_BAR);
1256 value.Append(GetHue());
1259 __pColorPickerModel->SetSaturation(MAX_VALUE - ((double)(__componentBounds[SAT_HANDLER].x - __componentBounds[SAT_BAR].x)
1260 / (double)(__componentBounds[SAT_BAR].width - __componentBounds[SAT_HANDLER].width)));
1262 pElement = __pColorPicker->GetAccessibilityElement(SAT_BAR);
1263 value.Append(GetSaturation());
1266 __pColorPickerModel->SetLuminance((double)(__componentBounds[LUM_HANDLER].x - __componentBounds[LUM_BAR].x)
1267 / (double)(__componentBounds[LUM_BAR].width - __componentBounds[LUM_HANDLER].width));
1269 pElement = __pColorPicker->GetAccessibilityElement(LUM_BAR);
1270 value.Append(GetLuminance());
1277 if (pElement != null)
1279 pElement->SetValue(value);
1282 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Handler event type is invalid.");
1284 bool isHueChanged = __hueColor != __pColorPickerModel->GetHueColor();
1285 bool isSaturationChanged = __saturationColor != __pColorPickerModel->GetSaturationColor();
1286 if (isHueChanged == true || isSaturationChanged == true)
1288 Canvas* pCanvas = __pColorPicker->GetCanvasN();
1289 if (pCanvas != null)
1291 if (isHueChanged == true)
1293 DrawSaturationSlider(*pCanvas);
1295 if (isSaturationChanged == true)
1297 DrawLuminanceSlider(*pCanvas);
1301 __pColorPicker->UpdateView();
1305 return __pColorPicker->FireColorChangeEvent(__pColorPickerModel->GetColor());
1309 _ColorPickerPresenter::IsLeftButton(_ColorPickerComponentType buttonType)
1311 return (buttonType == HUE_ARROWLEFT || buttonType == SAT_ARROWLEFT || buttonType == LUM_ARROWLEFT);
1315 _ColorPickerPresenter::GetBarBoundsFromHandler(_ColorPickerComponentType handlerType)
1317 if (handlerType == HUE_HANDLER)
1319 return __componentBounds[HUE_BAR];
1321 else if (handlerType == SAT_HANDLER)
1323 return __componentBounds[SAT_BAR];
1325 else if (handlerType == LUM_HANDLER)
1327 return __componentBounds[LUM_BAR];
1330 return __componentBounds[HSL_NOT];
1333 _ColorPickerComponentType
1334 _ColorPickerPresenter::GetTouchActionType(const Point& position) const
1336 if (__componentBounds[HUE_BAR].Contains(position) == true)
1340 else if (__componentBounds[SAT_BAR].Contains(position) == true)
1344 else if (__componentBounds[LUM_BAR].Contains(position) == true)
1349 for (int type = HUE_ARROWLEFT; type < COMPONENT_TYPE_MAX; type++)
1351 if (__componentBounds[type].Contains(position) == true)
1353 return (_ColorPickerComponentType)type;
1361 _ColorPickerPresenter::DrawResourceBitmap(Canvas& canvas, const Rectangle& bounds, Bitmap* pBitmap)
1363 result r = E_SUCCESS;
1365 SysTryReturn(NID_UI_CTRL, pBitmap != null, E_INVALID_ARG, E_INVALID_ARG,
1366 "[E_INVALID_ARG] Invalid argument is used. Provided bitmap is null.");
1368 if (pBitmap->IsNinePatchedBitmap())
1370 r = canvas.DrawNinePatchedBitmap(bounds, *pBitmap);
1371 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
1375 r = canvas.DrawBitmap(bounds, *pBitmap);
1376 SysTryReturn(NID_UI_CTRL, (r == E_SUCCESS), r, r, "[%s] Propagating.", GetErrorMessage(r));
1380 }}} // Tizen::Ui::Controls