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.
19 * @file FGrp_ResUtil.h
20 * @brief This is the header file for internal _ResUtil namespace.
24 #ifndef _FGRP_INTERNAL_RES_UTIL_H_
25 #define _FGRP_INTERNAL_RES_UTIL_H_
29 #include <FBaseColArrayList.h>
30 #include <FGrpPoint.h>
31 #include <FGrpRectangle.h>
33 #include "util/FGrp_UtilType.h"
37 #include "FGrp_CoordSystem.h"
38 ////////////////////////////////////////////////////////////////////////////////
39 // Coordinate conversion
41 namespace Tizen { namespace Graphics
58 Rect(int _x, int _y, int _w, int _h)
102 template<unsigned int VirRes, unsigned int PhyRes>
105 inline static int ToVirCoord(int phy);
106 inline static int ToPhyCoord(int vir);
107 inline static int ToPhyCoord4Size(int vir);
111 template<unsigned int VirResX, unsigned int VirResY, unsigned int PhyResX, unsigned int PhyResY>
114 inline static int ToVirCoordX(int phyX)
116 return ResConv1d <VirResX, PhyResX>::ToVirCoord(phyX);
119 inline static int ToVirCoordY(int phyY)
121 return ResConv1d <VirResY, PhyResY>::ToVirCoord(phyY);
124 inline static int ToPhyCoordX(int virX)
126 return ResConv1d <VirResX, PhyResX>::ToPhyCoord(virX);
129 inline static int ToPhyCoordY(int virY)
131 return ResConv1d <VirResY, PhyResY>::ToPhyCoord(virY);
134 inline static int ToPhyCoord4Size(int vir)
136 return ResConv1d <VirResY, PhyResY>::ToPhyCoord4Size(vir);
140 /////////////////////
151 template<ResType Res>
156 template<ResType VirRes, ResType PhyRes>
159 typedef ResConv2d <ResTraits <VirRes>::ResWidth, ResTraits <VirRes>::ResHeight, ResTraits <PhyRes>::ResWidth,
160 ResTraits <PhyRes>::ResHeight> CurrentResConv;
163 inline static T ToPhyCoord(const T& sour)
165 return CurrentResConv::ToPhyCoordY(sour);
169 inline static T ToVirCoord(const T& sour)
171 return CurrentResConv::ToVirCoordY(sour);
174 inline static int ToPhyCoordSize(int sour)
176 return CurrentResConv::ToPhyCoord4Size(sour);
179 inline static int ToPhyCoordX(int sour)
181 return CurrentResConv::ToPhyCoordX(sour);
184 inline static int ToPhyCoordY(int sour)
186 return CurrentResConv::ToPhyCoordY(sour);
189 inline static int ToPhyCoordW(int sour)
191 return CurrentResConv::ToPhyCoordX(sour);
194 inline static int ToPhyCoordH(int sour)
196 return CurrentResConv::ToPhyCoordY(sour);
199 inline static int ToVirCoordX(int sour)
201 return CurrentResConv::ToVirCoordX(sour);
204 inline static int ToVirCoordY(int sour)
206 return CurrentResConv::ToVirCoordY(sour);
209 inline static int ToVirCoordW(int sour)
211 return CurrentResConv::ToVirCoordX(sour);
214 inline static int ToVirCoordH(int sour)
216 return CurrentResConv::ToVirCoordY(sour);
219 inline static Rect ToPhyCoord(const Rect& sour)
221 int destX = CurrentResConv::ToPhyCoordX(sour.x);
222 int destY = CurrentResConv::ToPhyCoordY(sour.y);
228 CurrentResConv::ToPhyCoordX(sour.x + sour.w) - destX,
229 CurrentResConv::ToPhyCoordY(sour.y + sour.h) - destY
233 inline static Pos ToPhyCoord(const Pos& sour)
237 CurrentResConv::ToPhyCoordX(sour.x),
238 CurrentResConv::ToPhyCoordY(sour.y)
242 inline static Size ToPhyCoord(const Size& sour)
246 CurrentResConv::ToPhyCoordX(sour.w),
247 CurrentResConv::ToPhyCoordY(sour.h)
251 inline static Tizen::Graphics::Rectangle ToPhyCoord(const Tizen::Graphics::Rectangle& sour)
253 Tizen::Graphics::Rectangle dest;
255 dest.x = CurrentResConv::ToPhyCoordX(sour.x);
256 dest.y = CurrentResConv::ToPhyCoordY(sour.y);
258 dest.width = CurrentResConv::ToPhyCoordX(sour.x + sour.width) - dest.x;
259 dest.height = CurrentResConv::ToPhyCoordY(sour.y + sour.height) - dest.y;
264 inline static Tizen::Graphics::Point ToPhyCoord(const Tizen::Graphics::Point& sour)
266 return Tizen::Graphics::Point(CurrentResConv::ToPhyCoordX(sour.x), CurrentResConv::ToPhyCoordY(sour.y));
269 inline static Tizen::Graphics::Dimension ToPhyCoord(const Tizen::Graphics::Dimension& sour)
271 return Tizen::Graphics::Dimension(CurrentResConv::ToPhyCoordX(sour.width), CurrentResConv::ToPhyCoordY(sour.height));
274 inline static Rect ToVirCoord(const Rect& sour)
276 int destX = CurrentResConv::ToVirCoordX(sour.x);
277 int destY = CurrentResConv::ToVirCoordY(sour.y);
283 CurrentResConv::ToVirCoordX(sour.x + sour.w) - destX,
284 CurrentResConv::ToVirCoordY(sour.y + sour.h) - destY
288 inline static Pos ToVirCoord(const Pos& sour)
292 CurrentResConv::ToVirCoordX(sour.x),
293 CurrentResConv::ToVirCoordY(sour.y)
297 inline static Size ToVirCoord(const Size& sour)
301 CurrentResConv::ToVirCoordX(sour.w),
302 CurrentResConv::ToVirCoordY(sour.h)
306 inline static Tizen::Graphics::Rectangle ToVirCoord(const Tizen::Graphics::Rectangle& sour)
308 Rect pc_rect = Rect(sour.x, sour.y, sour.width, sour.height);
309 Rect vc_rect = ResConv <VirRes, PhyRes>::ToVirCoord(pc_rect);
311 return Tizen::Graphics::Rectangle(vc_rect.x, vc_rect.y, vc_rect.w, vc_rect.h);
314 inline static Tizen::Graphics::Point ToVirCoord(const Tizen::Graphics::Point& sour)
316 return Tizen::Graphics::Point(CurrentResConv::ToVirCoordX(sour.x), CurrentResConv::ToVirCoordY(sour.y));
319 inline static Tizen::Graphics::Dimension ToVirCoord(const Tizen::Graphics::Dimension& sour)
321 return Tizen::Graphics::Dimension(CurrentResConv::ToVirCoordX(sour.width), CurrentResConv::ToVirCoordY(sour.height));
325 } // Tizen::Graphics::_ResUtil
327 }} // Tizen::Graphics
329 ////////////////////////////////////////////////////////////////////////////////
332 namespace Tizen { namespace Graphics
337 // (480x800) -> (240x400)
340 ResConv1d <480, 240>::ToVirCoord(int phy)
347 ResConv1d <480, 240>::ToPhyCoord(int vir)
354 ResConv1d <480, 240>::ToPhyCoord4Size(int vir)
356 return (vir >= 0) ? ((vir + 1) >> 1) : (vir >> 1);
361 ResConv1d <800, 400>::ToVirCoord(int phy)
368 ResConv1d <800, 400>::ToPhyCoord(int vir)
375 ResConv1d <800, 400>::ToPhyCoord4Size(int vir)
377 return (vir >= 0) ? ((vir + 1) >> 1) : (vir >> 1);
380 // (240x400) -> (480x800)
383 ResConv1d <240, 480>::ToVirCoord(int phy)
390 ResConv1d <240, 480>::ToPhyCoord(int vir)
397 ResConv1d <240, 480>::ToPhyCoord4Size(int vir)
404 ResConv1d <400, 800>::ToVirCoord(int phy)
411 ResConv1d <400, 800>::ToPhyCoord(int vir)
418 ResConv1d <400, 800>::ToPhyCoord4Size(int vir)
423 // (480x800) -> (320x480)
426 ResConv1d <480, 320>::ToVirCoord(int phy)
428 return ((phy) >= 0) ? ((phy) * 3 / 2) : (((phy) * 3 - 1) / 2);
433 ResConv1d <480, 320>::ToPhyCoord(int vir)
435 return ((vir) > 0) ? (((vir) + 1) * 2 / 3) : ((vir) * 2 / 3);
440 ResConv1d <480, 320>::ToPhyCoord4Size(int vir)
442 return ((vir) > 0) ? (((vir) + 1) * 2 / 3) : ((vir) * 2 / 3);
447 ResConv1d <800, 480>::ToVirCoord(int phy)
449 return ((phy) >= 0) ? ((phy) * 3 / 2) : (((phy) * 3 - 1) / 2);
454 ResConv1d <800, 480>::ToPhyCoord(int vir)
456 return ((vir) > 0) ? (((vir) + 1) * 2 / 3) : ((vir) * 2 / 3);
461 ResConv1d <800, 480>::ToPhyCoord4Size(int vir)
463 return ((vir) > 0) ? (((vir) + 1) * 2 / 3) : ((vir) * 2 / 3);
466 // (480x800) -> (320x480) compatibility
469 ResConv1d <801, 480>::ToVirCoord(int phy)
471 return (phy * 5 / 3);
476 ResConv1d <801, 480>::ToPhyCoord(int vir)
478 return (vir * 3 / 5);
483 ResConv1d <801, 480>::ToPhyCoord4Size(int vir)
485 return (vir * 3 / 5);
488 // (240x400) -> (320x480) compatibility
491 ResConv1d <240, 320>::ToVirCoord(int phy)
493 return (phy * 3 / 4);
498 ResConv1d <240, 320>::ToPhyCoord(int vir)
500 return (vir * 4 / 3);
505 ResConv1d <240, 320>::ToPhyCoord4Size(int vir)
507 return (vir * 4 / 3);
512 ResConv1d <400, 480>::ToVirCoord(int phy)
514 return (phy * 5 / 6);
519 ResConv1d <400, 480>::ToPhyCoord(int vir)
521 return (vir * 6 / 5);
526 ResConv1d <400, 480>::ToPhyCoord4Size(int vir)
528 return (vir * 6 / 5);
531 // (480x800) -> (540x960)
534 ResConv1d <480, 540>::ToVirCoord(int phy)
536 return (phy * 8 / 9);
541 ResConv1d <480, 540>::ToPhyCoord(int vir)
543 return (vir * 9 / 8);
548 ResConv1d <480, 540>::ToPhyCoord4Size(int vir)
550 return (vir >= 0) ? ((vir + 5) * 9 / 8) : (vir * 9 / 8);
555 ResConv1d <800, 960>::ToVirCoord(int phy)
557 return (phy * 8 / 9);
562 ResConv1d <800, 960>::ToPhyCoord(int vir)
564 return (vir * 9 / 8);
569 ResConv1d <800, 960>::ToPhyCoord4Size(int vir)
571 return (vir >= 0) ? ((vir + 5) * 9 / 8) : (vir * 9 / 8);
574 ////////////////////////////////////////////////////////////////////////////////
577 struct ResTraits <RES_WVGA>
590 struct ResTraits <RES_WQVGA>
603 struct ResTraits <RES_HVGA>
616 struct ResTraits <RES_WVGA_COMPAT>
624 ResHeight = (800 + 1)
629 struct ResTraits <RES_QHD>
641 } // Tizen::Graphics::_ResUtil
643 }} // Tizen::Graphics
645 ////////////////////////////////////////////////////////////////////////////////
648 namespace Tizen { namespace Graphics
655 NEED_TO_CONVERT(void)
657 _Resolution virRes = Tizen::Graphics::_CoordinateSystem::GetInstance()->GetInternalResolution();
658 _Resolution PhyRes = Tizen::Graphics::_CoordinateSystem::GetInstance()->GetDeviceResolution();
660 return (virRes != PhyRes);
663 typedef ResConv<RES_WQVGA, RES_WVGA> ResWQVGA2WVGA;
664 typedef ResConv<RES_WVGA, RES_WQVGA> ResWVGA2WQVGA;
665 typedef ResConv<RES_WVGA, RES_HVGA> ResWVGA2HVGA;
666 typedef ResConv<RES_WQVGA, RES_HVGA> ResWQVGA2HVGA;
667 typedef ResConv<RES_WVGA_COMPAT, RES_HVGA> ResWVGAcompat2HVGA;
668 typedef ResConv<RES_WVGA, RES_QHD> ResWVGA2QHD;
670 #if defined(_MODEL_RES_WVGA)
671 // #error "Base resolution: 480 x 800"
672 typedef ResWQVGA2WVGA CurrentResConv;
673 #elif defined(_MODEL_RES_WQVGA)
674 // #error "Base resolution: 240 x 400"
675 typedef ResWVGA2WQVGA CurrentResConv;
676 #elif defined(_MODEL_RES_HVGA)
677 // #error "Base resolution: 320 x 480"
678 typedef ResWVGA2HVGA CurrentResConv;
679 #elif defined(_MODEL_RES_QHD)
680 // #error "Base resolution: 800 x 1280"
681 typedef ResWVGA2QHD CurrentResConv;
683 //#error "Open CMakeLists.txt and define base resolution for new model"
684 typedef ResWVGA2WQVGA CurrentResConv;
688 #if 0 // defined(_MODEL_RES_HVGA)
689 #define NOT_FROM_WQVGA() (Tizen::Graphics::_CoordinateSystem::GetInstance()->GetInternalResolution() != \
690 Tizen::Graphics::RESOLUTION_WQVGA)
691 #define NOT_FROM_WVGA_COMPAT() (Tizen::Graphics::_CoordinateSystem::GetInstance()->GetInternalResolution() != \
692 Tizen::Graphics::RESOLUTION_WVGA_COMPAT)
693 #define TRANSFORM(func, sour) \
701 NOT_FROM_WVGA_COMPAT() \
704 CurrentResConv::func(sour) \
708 ResWVGAcompat2HVGA::func(sour) \
713 ResWQVGA2HVGA::func(sour) \
722 TO_PHY_COORD(const T& sour)
724 return TRANSFORM(ToPhyCoord, sour);
729 TO_VIR_COORD(const T& sour)
731 return TRANSFORM(ToVirCoord, sour);
734 #define CONVERT_TO_P_COORD_X(sour) TRANSFORM(ToPhyCoordX, sour)
735 #define CONVERT_TO_P_COORD_Y(sour) TRANSFORM(ToPhyCoordY, sour)
736 #define CONVERT_TO_P_COORD_W(sour) TRANSFORM(ToPhyCoordW, sour)
737 #define CONVERT_TO_P_COORD_H(sour) TRANSFORM(ToPhyCoordH, sour)
738 #define CONVERT_TO_P_COORD_SIZE(sour) TRANSFORM(ToPhyCoordSize, sour)
740 #define CONVERT_TO_V_COORD_X(sour) TRANSFORM(ToVirCoordX, sour)
741 #define CONVERT_TO_V_COORD_Y(sour) TRANSFORM(ToVirCoordY, sour)
742 #define CONVERT_TO_V_COORD_W(sour) TRANSFORM(ToVirCoordW, sour)
743 #define CONVERT_TO_V_COORD_H(sour) TRANSFORM(ToVirCoordH, sour)
746 CONVERT_TO_P_COORD_POINT_LIST(Tizen::Base::Collection::ArrayList& dest, const Tizen::Base::Collection::IList& sour)
750 if (NEED_TO_CONVERT())
752 r = dest.Construct();
756 for (int i = 0; i < sour.GetCount(); i++)
758 Tizen::Graphics::Point* pSourPoint =
759 dynamic_cast <Tizen::Graphics::Point*>(const_cast <Tizen::Base::Object*>(sour.GetAt(i)));
761 if (pSourPoint == null)
766 Tizen::Graphics::Point* pDestPoint = new (std::nothrow) Tizen::Graphics::Point(pSourPoint->x, pSourPoint->y);
768 if (pDestPoint == null)
773 if (NOT_FROM_WQVGA())
775 if (NOT_FROM_WVGA_COMPAT())
777 *pDestPoint = CurrentResConv::ToPhyCoord(*pDestPoint);
781 *pDestPoint = ResWVGAcompat2HVGA::ToPhyCoord(*pDestPoint);
786 *pDestPoint = ResWQVGA2HVGA::ToPhyCoord(*pDestPoint);
789 dest.Add(*pDestPoint);
795 r = dest.Construct(sour);
798 return (r == E_SUCCESS);
804 TO_PHY_COORD(const T& sour)
806 return _ResUtil::NEED_TO_CONVERT() ? _ResUtil::CurrentResConv::ToPhyCoord(sour) : sour;
811 TO_VIR_COORD(const T& sour)
813 return NEED_TO_CONVERT() ? CurrentResConv::ToVirCoord(sour) : sour;
817 CONVERT_TO_P_COORD_POINT_LIST(Tizen::Base::Collection::ArrayList& dest, const Tizen::Base::Collection::IList& sour)
821 if (NEED_TO_CONVERT())
823 r = dest.Construct();
827 for (int i = 0; i < sour.GetCount(); i++)
829 Tizen::Graphics::Point* pSourPoint =
830 dynamic_cast <Tizen::Graphics::Point*>(const_cast <Tizen::Base::Object*>(sour.GetAt(i)));
832 if (pSourPoint == null)
837 Tizen::Graphics::Point* pDestPoint = new (std::nothrow) Tizen::Graphics::Point(pSourPoint->x, pSourPoint->y);
839 if (pDestPoint == null)
844 *pDestPoint = CurrentResConv::ToPhyCoord(*pDestPoint);
846 dest.Add(*pDestPoint);
852 r = dest.Construct(sour);
855 return (r == E_SUCCESS);
858 #define CONVERT_TO_P_COORD_X(sour) (_ResUtil::NEED_TO_CONVERT() ? _ResUtil::CurrentResConv::ToPhyCoordX(sour) : sour)
859 #define CONVERT_TO_P_COORD_Y(sour) (_ResUtil::NEED_TO_CONVERT() ? _ResUtil::CurrentResConv::ToPhyCoordY(sour) : sour)
860 #define CONVERT_TO_P_COORD_W(sour) (_ResUtil::NEED_TO_CONVERT() ? _ResUtil::CurrentResConv::ToPhyCoordW(sour) : sour)
861 #define CONVERT_TO_P_COORD_H(sour) (_ResUtil::NEED_TO_CONVERT() ? _ResUtil::CurrentResConv::ToPhyCoordH(sour) : sour)
862 #define CONVERT_TO_P_COORD_SIZE(sour) (_ResUtil::NEED_TO_CONVERT() ? _ResUtil::CurrentResConv::ToPhyCoordSize(sour) : sour)
864 #define CONVERT_TO_V_COORD_X(sour) (_ResUtil::NEED_TO_CONVERT() ? _ResUtil::CurrentResConv::ToVirCoordX(sour) : sour)
865 #define CONVERT_TO_V_COORD_Y(sour) (_ResUtil::NEED_TO_CONVERT() ? _ResUtil::CurrentResConv::ToVirCoordY(sour) : sour)
866 #define CONVERT_TO_V_COORD_W(sour) (_ResUtil::NEED_TO_CONVERT() ? _ResUtil::CurrentResConv::ToVirCoordW(sour) : sour)
867 #define CONVERT_TO_V_COORD_H(sour) (_ResUtil::NEED_TO_CONVERT() ? _ResUtil::CurrentResConv::ToVirCoordH(sour) : sour)
869 #endif // #if defined(_MODEL_RES_HVGA)
871 } // Tizen::Graphics::_ResUtil
873 }} // Tizen::Graphics
875 ////////////////////////////////////////////////////////////////////////////////
876 // struct CoordHolder
878 namespace Tizen { namespace Graphics
890 void operator =(const T& in)
893 phyCoord = TO_PHY_COORD(required);
894 virCoord = TO_VIR_COORD(phyCoord);
897 } // Tizen::Graphics::_ResUtil
899 }} // Tizen::Graphics
903 #include "FGrp_CoordinateSystem.h"
905 namespace Tizen { namespace Graphics
926 Rect(int _x, int _y, int _w, int _h)
971 ////////////////////////////////////////////////////////////////////////////////
978 ToPhyCoord(const T& sour)
980 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetTransformer();
981 return (pTransformer) ? pTransformer->Transform(sour) : sour;
986 ToVirCoord(const T& sour)
988 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetInverseTransformer();
989 return (pTransformer) ? pTransformer->Transform(sour) : sour;
993 inline _Util::Point<int>
994 ToPhyCoord(const _Util::Point<int>& sour)
996 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetTransformer();
998 if (pTransformer == null)
1003 _Util::Point<int> dest =
1005 pTransformer->TransformHorizontal(sour.x),
1006 pTransformer->TransformVertical(sour.y)
1013 inline _Util::Point<double>
1014 ToPhyCoord(const _Util::Point<double>& sour)
1016 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetTransformer();
1020 _Util::Point<double> temp =
1022 sour.x * double(pTransformer->GetHorizontalScaleFactor()),
1023 sour.y * double(pTransformer->GetVerticalScaleFactor())
1035 inline _Util::Dimension<double>
1036 ToPhyCoord(const _Util::Dimension<double>& sour)
1038 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetTransformer();
1042 _Util::Dimension<double> temp =
1044 sour.w * double(pTransformer->GetHorizontalScaleFactor()),
1045 sour.h * double(pTransformer->GetVerticalScaleFactor())
1057 inline _Util::Rectangle<double>
1058 ToPhyCoord(const _Util::Rectangle<double>& sour)
1060 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetTransformer();
1064 _Util::Rectangle<double> temp =
1066 sour.x * double(pTransformer->GetHorizontalScaleFactor()),
1067 sour.y * double(pTransformer->GetVerticalScaleFactor()),
1068 sour.w * double(pTransformer->GetHorizontalScaleFactor()),
1069 sour.h * double(pTransformer->GetVerticalScaleFactor())
1082 ToPhyCoord(const Rect& sour)
1084 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetTransformer();
1086 if (pTransformer == null)
1091 Rectangle rect1(sour.x, sour.y, sour.w, sour.h);
1092 Rectangle rect2 = pTransformer->Transform(rect1);
1094 return Rect(rect2.x, rect2.y, rect2.width, rect2.height);
1099 ToVirCoord(const Rect& sour)
1101 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetInverseTransformer();
1103 if (pTransformer == null)
1108 Rectangle rect1(sour.x, sour.y, sour.w, sour.h);
1109 Rectangle rect2 = pTransformer->Transform(rect1);
1111 return Rect(rect2.x, rect2.y, rect2.width, rect2.height);
1116 ToPhyCoord(const Pos& sour)
1118 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetTransformer();
1120 if (pTransformer == null)
1125 Point point1(sour.x, sour.y);
1126 Point point2 = pTransformer->Transform(point1);
1128 return Pos(point2.x, point2.y);
1133 ToVirCoord(const Pos& sour)
1135 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetInverseTransformer();
1137 if (pTransformer == null)
1142 Point point1(sour.x, sour.y);
1143 Point point2 = pTransformer->Transform(point1);
1145 return Pos(point2.x, point2.y);
1148 ////////////////////////////////////////////////////////////////////////////////
1150 template<typename T>
1152 ToVirCoordX(const T& sour)
1154 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetInverseTransformer();
1155 return (pTransformer) ? pTransformer->TransformHorizontal(sour) : sour;
1158 template<typename T>
1160 ToVirCoordY(const T& sour)
1162 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetInverseTransformer();
1163 return (pTransformer) ? pTransformer->TransformVertical(sour) : sour;
1166 template<typename T>
1168 ToPhyCoordW(const T& sour)
1170 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetTransformer();
1171 return (pTransformer) ? pTransformer->TransformHorizontal(sour) : sour;
1174 template<typename T>
1176 ToVirCoordW(const T& sour)
1178 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetInverseTransformer();
1179 return (pTransformer) ? pTransformer->TransformHorizontal(sour) : sour;
1182 template<typename T>
1184 ToPhyCoordH(const T& sour)
1186 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetTransformer();
1187 return (pTransformer) ? pTransformer->TransformVertical(sour) : sour;
1190 template<typename T>
1192 ToVirCoordH(const T& sour)
1194 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetInverseTransformer();
1195 return (pTransformer) ? pTransformer->TransformVertical(sour) : sour;
1198 template<typename T>
1200 ToPhyCoordSize(const T& sour)
1202 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetInstance()->GetTransformer();
1203 return (pTransformer) ? pTransformer->TransformVertical(sour) : sour;
1208 ////////////////////////////////////////////////////////////////////////////////
1211 NeedToConvertCoord(void)
1213 _LogicalResolution logicalResolution = Tizen::Graphics::_CoordinateSystem::GetInstance()->GetLogicalResolution();
1214 _PhysicalResolution physicalResolution = Tizen::Graphics::_CoordinateSystem::GetInstance()->GetPhysicalResolution();
1216 return !((logicalResolution == RESOLUTION_LOGICAL_480 && physicalResolution == RESOLUTION_PHYSICAL_WVGA) || (logicalResolution == RESOLUTION_LOGICAL_720 && physicalResolution == RESOLUTION_PHYSICAL_HD));
1219 template<typename T>
1221 ConvertToPhyCoord(const T& sour)
1223 return NeedToConvertCoord() ? ToPhyCoord(sour) : sour;
1226 template<typename T>
1228 ConvertToVirCoord(const T& sour)
1230 return NeedToConvertCoord() ? ToVirCoord(sour) : sour;
1233 template<typename T>
1235 ConvertToPhyCoordWidth(const T& sour)
1237 return NeedToConvertCoord() ? ToPhyCoordW(sour) : sour;
1240 template<typename T>
1242 ConvertToPhyCoordHeight(const T& sour)
1244 return NeedToConvertCoord() ? ToPhyCoordH(sour) : sour;
1247 template<typename T>
1249 ConvertToPhyCoordSize(const T& sour)
1251 return NeedToConvertCoord() ? ToPhyCoordSize(sour) : sour;
1254 template<typename T>
1256 ConvertToVirCoordX(const T& sour)
1258 return NeedToConvertCoord() ? ToVirCoordX(sour) : sour;
1261 template<typename T>
1263 ConvertToVirCoordY(const T& sour)
1265 return NeedToConvertCoord() ? ToVirCoordY(sour) : sour;
1269 ConvertToPhyCoordPointList(Tizen::Base::Collection::ArrayList& dest, const Tizen::Base::Collection::IList& sour)
1273 if (NeedToConvertCoord())
1275 r = dest.Construct();
1279 for (int i = 0; i < sour.GetCount(); i++)
1281 Tizen::Graphics::Point* pSourPoint =
1282 dynamic_cast <Tizen::Graphics::Point*>(const_cast <Tizen::Base::Object*>(sour.GetAt(i)));
1284 if (pSourPoint == null)
1286 dest.RemoveAll(true);
1290 Tizen::Graphics::Point* pDestPoint = new (std::nothrow) Tizen::Graphics::Point(pSourPoint->x, pSourPoint->y);
1292 if (pDestPoint == null)
1294 dest.RemoveAll(true);
1298 *pDestPoint = ToPhyCoord(*pDestPoint);
1300 dest.Add(*pDestPoint);
1306 r = dest.Construct(sour);
1309 return (r == E_SUCCESS);
1312 ////////////////////////////////////////////////////////////////////////////////
1314 template<typename T>
1321 void operator =(const T& in)
1324 phyCoord = ConvertToPhyCoord(required);
1325 virCoord = ConvertToVirCoord(phyCoord);
1331 }} // Tizen::Graphics
1335 #endif //_FGRP_INTERNAL_RES_UTIL_H_