Follow formatting NUI
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / internal / XamlBinding / PositionTypeConverter.cs
1 using System;
2 using System.Linq;
3 using System.Reflection;
4 using System.Globalization;
5
6 using Tizen.NUI;
7
8 namespace Tizen.NUI.Binding
9 {
10     internal class PositionTypeConverter : TypeConverter
11     {
12         public override object ConvertFromInvariantString(string value)
13         {
14             if (value != null)
15             {
16                 string[] parts = value.Split('.');
17                 if (parts.Length == 1 || (parts.Length == 2 && (parts[0].Trim() == "ParentOrigin" || parts[0].Trim() == "PivotPoint")))
18                 {
19                     string position = parts[parts.Length - 1].Trim();
20
21                     switch (position)
22                     {
23                         case "Top":
24                             return ParentOrigin.Top;
25                         case "Bottom":
26                             return ParentOrigin.Bottom;
27                         case "Left":
28                             return ParentOrigin.Left;
29                         case "Right":
30                             return ParentOrigin.Right;
31                         case "Middle":
32                             return ParentOrigin.Middle;
33                         case "TopLeft":
34                             return ParentOrigin.TopLeft;
35                         case "TopCenter":
36                             return ParentOrigin.TopCenter;
37                         case "TopRight":
38                             return ParentOrigin.TopRight;
39                         case "CenterLeft":
40                             return ParentOrigin.CenterLeft;
41                         case "Center":
42                             return ParentOrigin.Center;
43                         case "CenterRight":
44                             return ParentOrigin.CenterRight;
45                         case "BottomLeft":
46                             return ParentOrigin.BottomLeft;
47                         case "BottomCenter":
48                             return ParentOrigin.BottomCenter;
49                         case "BottomRight":
50                             return ParentOrigin.BottomRight;
51                     }
52                 }
53
54                 parts = value.Split(',');
55                 if (parts.Length == 3)
56                 {
57                     int x = (int)GraphicsTypeManager.Instance.ConvertScriptToPixel(parts[0].Trim());
58                     int y = (int)GraphicsTypeManager.Instance.ConvertScriptToPixel(parts[1].Trim());
59                     int z = (int)GraphicsTypeManager.Instance.ConvertScriptToPixel(parts[2].Trim());
60                     return new Position(x, y, z);
61                 }
62                 else if (parts.Length == 2)
63                 {
64                     int x = (int)GraphicsTypeManager.Instance.ConvertScriptToPixel(parts[0].Trim());
65                     int y = (int)GraphicsTypeManager.Instance.ConvertScriptToPixel(parts[1].Trim());
66                     return new Position(x, y);
67                 }
68             }
69
70             throw new InvalidOperationException($"Cannot convert \"{value}\" into {typeof(Position)}");
71         }
72
73         public override string ConvertToString(object value)
74         {
75             Position position = (Position)value;
76             return position.X.ToString() + " " + position.Y.ToString() + " " + position.Z.ToString();
77         }
78     }
79
80     internal class Position2DTypeConverter : TypeConverter
81     {
82         public override object ConvertFromInvariantString(string value)
83         {
84             return Position2D.ConvertFromString(value);
85         }
86
87         public override string ConvertToString(object value)
88         {
89             Position2D position = (Position2D)value;
90             return position.X.ToString() + " " + position.Y.ToString();
91         }
92     }
93 }