summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeungkeun Lee <sngn.lee@samsung.com>2017-02-08 10:17:28 +0900
committerKangho Hur <kangho.hur@samsung.com>2017-04-24 13:36:54 +0900
commit84180f9380d5e14f17d26d46ec0287695737539e (patch)
treeba0397a3d912847b40bc63c085e258a04c05d433
parent70b9f6ce1612ad7060a6b0c910a77d86ccadfc31 (diff)
downloadxamarin-forms-84180f9380d5e14f17d26d46ec0287695737539e.tar.gz
xamarin-forms-84180f9380d5e14f17d26d46ec0287695737539e.tar.bz2
xamarin-forms-84180f9380d5e14f17d26d46ec0287695737539e.zip
Support density independent pixel
- Support Enable/Disable of this feature - By default, it was disabled. if you want enabling DP support feature, Use Forms.Init(FormsApplication application, bool useDeviceIndependentPixel) API - Hard-coded pixel value was changed to DP units - If you deal with native coordinate, use Forms.ConvertToScaledPixel / Forms.ConvertToScaledDP - If you convert hard-coded DP to pixels, use Forms.ConvertToPixel - Update font size convert formula Change-Id: I345115551e1c37d27b8a7152af5ef847d035c9a4
-rw-r--r--Xamarin.Forms.Platform.Tizen/Cells/CellRenderer.cs5
-rw-r--r--Xamarin.Forms.Platform.Tizen/Cells/EntryCellRenderer.cs14
-rw-r--r--Xamarin.Forms.Platform.Tizen/Cells/ImageCellRenderer.cs12
-rw-r--r--Xamarin.Forms.Platform.Tizen/Cells/ViewCellRenderer.cs8
-rw-r--r--Xamarin.Forms.Platform.Tizen/Extensions/DensityIndependentPixelExtensions.cs31
-rw-r--r--Xamarin.Forms.Platform.Tizen/Forms.cs90
-rw-r--r--Xamarin.Forms.Platform.Tizen/Native/ListView.cs4
-rw-r--r--Xamarin.Forms.Platform.Tizen/Native/Span.cs2
-rw-r--r--Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs3
-rw-r--r--Xamarin.Forms.Platform.Tizen/Renderers/LayoutRenderer.cs4
-rw-r--r--[-rwxr-xr-x]Xamarin.Forms.Platform.Tizen/Renderers/ScrollViewRenderer.cs2
-rw-r--r--Xamarin.Forms.Platform.Tizen/Renderers/SearchBarRenderer.cs2
-rw-r--r--Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs41
-rw-r--r--Xamarin.Forms.Platform.Tizen/TizenPlatformServices.cs10
-rw-r--r--Xamarin.Forms.Platform.Tizen/Xamarin.Forms.Platform.Tizen.csproj1
-rw-r--r--packaging/xamarin-forms-tizen.spec2
16 files changed, 173 insertions, 58 deletions
diff --git a/Xamarin.Forms.Platform.Tizen/Cells/CellRenderer.cs b/Xamarin.Forms.Platform.Tizen/Cells/CellRenderer.cs
index 096c1689..e66db635 100644
--- a/Xamarin.Forms.Platform.Tizen/Cells/CellRenderer.cs
+++ b/Xamarin.Forms.Platform.Tizen/Cells/CellRenderer.cs
@@ -1,6 +1,5 @@
using ElmSharp;
using System.Collections.Generic;
-using EColor = ElmSharp.Color;
namespace Xamarin.Forms.Platform.Tizen
{
@@ -58,14 +57,14 @@ namespace Xamarin.Forms.Platform.Tizen
return null;
}
- protected int FindCellContentHeight(Cell cell)
+ protected double FindCellContentHeight(Cell cell)
{
ViewCell viewCell = cell as ViewCell;
if (viewCell != null)
{
var parentWidth = (cell.Parent as VisualElement).Width;
var view = viewCell.View;
- return (int)view.Measure(parentWidth, double.PositiveInfinity).Request.Height;
+ return view.Measure(parentWidth, double.PositiveInfinity).Request.Height;
}
else
return -1;
diff --git a/Xamarin.Forms.Platform.Tizen/Cells/EntryCellRenderer.cs b/Xamarin.Forms.Platform.Tizen/Cells/EntryCellRenderer.cs
index b74a6f96..5db92394 100644
--- a/Xamarin.Forms.Platform.Tizen/Cells/EntryCellRenderer.cs
+++ b/Xamarin.Forms.Platform.Tizen/Cells/EntryCellRenderer.cs
@@ -8,7 +8,7 @@ namespace Xamarin.Forms.Platform.Tizen
{
public class EntryCellRenderer : ViewCellRenderer
{
- static readonly int s_defaultHeight = 120;
+ static readonly double s_defaultHeight = 65;
static readonly EColor s_defaultLabelColor = EColor.Black;
readonly Dictionary<EvasObject, VisualElement> _cacheCandidate = new Dictionary<EvasObject, VisualElement>();
@@ -22,8 +22,8 @@ namespace Xamarin.Forms.Platform.Tizen
if (part == MainContentPart)
{
var entryCell = cell as EntryCell;
- int height = (int)entryCell.RenderHeight;
- height = height > 0 ? height : s_defaultHeight;
+ int pixelHeight = Forms.ConvertToScaledPixel(entryCell.RenderHeight);
+ pixelHeight = pixelHeight > 0 ? pixelHeight : Forms.ConvertToPixel(s_defaultHeight);
var label = new Label()
{
@@ -56,10 +56,10 @@ namespace Xamarin.Forms.Platform.Tizen
};
layout.Parent = cell.Parent;
layout.BindingContext = entryCell;
- layout.MinimumHeightRequest = height;
+ layout.MinimumHeightRequest = Forms.ConvertToScaledDP(pixelHeight);
var nativeView = Platform.GetOrCreateRenderer(layout).NativeView;
- nativeView.MinimumHeight = height;
+ nativeView.MinimumHeight = pixelHeight;
_cacheCandidate[nativeView] = layout;
nativeView.Deleted += (sender, e) =>
{
@@ -79,8 +79,8 @@ namespace Xamarin.Forms.Platform.Tizen
var layout = _cacheCandidate[old];
layout.BindingContext = cell;
- int height = (int)cell.RenderHeight;
- height = height > 0 ? height : s_defaultHeight;
+ int height = Forms.ConvertToScaledPixel(cell.RenderHeight);
+ height = height > 0 ? height : Forms.ConvertToPixel(s_defaultHeight);
old.MinimumHeight = height;
return old;
}
diff --git a/Xamarin.Forms.Platform.Tizen/Cells/ImageCellRenderer.cs b/Xamarin.Forms.Platform.Tizen/Cells/ImageCellRenderer.cs
index 7bee5c8a..2bf64b4c 100644
--- a/Xamarin.Forms.Platform.Tizen/Cells/ImageCellRenderer.cs
+++ b/Xamarin.Forms.Platform.Tizen/Cells/ImageCellRenderer.cs
@@ -5,7 +5,7 @@ namespace Xamarin.Forms.Platform.Tizen
{
public class ImageCellRenderer : TextCellRenderer
{
- const int _defaultHeight = 100;
+ const int _defaultHeight = 55;
Dictionary<EvasObject, Native.Image> _realizedViews = new Dictionary<EvasObject, Native.Image>();
public ImageCellRenderer() : this("type1")
@@ -21,16 +21,16 @@ namespace Xamarin.Forms.Platform.Tizen
if (part == ImagePart)
{
var imgCell = cell as ImageCell;
- var size = imgCell.RenderHeight;
- if (size <= 0)
+ int pixelSize = Forms.ConvertToScaledPixel(imgCell.RenderHeight);
+ if (pixelSize <= 0)
{
- size = _defaultHeight;
+ pixelSize = Forms.ConvertToPixel(_defaultHeight);
}
var image = new Native.Image(Forms.Context.MainWindow)
{
- MinimumWidth = (int)size,
- MinimumHeight = (int)size
+ MinimumWidth = pixelSize,
+ MinimumHeight = pixelSize
};
image.SetAlignment(-1.0, -1.0); // fill
image.SetWeight(1.0, 1.0); // expand
diff --git a/Xamarin.Forms.Platform.Tizen/Cells/ViewCellRenderer.cs b/Xamarin.Forms.Platform.Tizen/Cells/ViewCellRenderer.cs
index bb17ec82..38062c7c 100644
--- a/Xamarin.Forms.Platform.Tizen/Cells/ViewCellRenderer.cs
+++ b/Xamarin.Forms.Platform.Tizen/Cells/ViewCellRenderer.cs
@@ -45,10 +45,10 @@ namespace Xamarin.Forms.Platform.Tizen
Platform.GetRenderer(viewCell.View)?.Dispose();
var renderer = Platform.GetOrCreateRenderer(viewCell.View);
- int height = (int)viewCell.RenderHeight;
+ double height = viewCell.RenderHeight;
height = height > 0 ? height : FindCellContentHeight(viewCell);
- renderer.NativeView.MinimumHeight = height;
+ renderer.NativeView.MinimumHeight = Forms.ConvertToScaledPixel(height);
return renderer.NativeView;
}
return null;
@@ -71,9 +71,9 @@ namespace Xamarin.Forms.Platform.Tizen
duplicatedCell.Parent = listView;
var renderer = Platform.GetOrCreateRenderer(duplicatedCell.View);
- int height = (int)duplicatedCell.RenderHeight;
+ double height = duplicatedCell.RenderHeight;
height = height > 0 ? height : FindCellContentHeight(duplicatedCell);
- renderer.NativeView.MinimumHeight = height;
+ renderer.NativeView.MinimumHeight = Forms.ConvertToScaledPixel(height);
_cacheCandidate[renderer.NativeView] = duplicatedCell;
renderer.NativeView.Deleted += (sender, e) =>
diff --git a/Xamarin.Forms.Platform.Tizen/Extensions/DensityIndependentPixelExtensions.cs b/Xamarin.Forms.Platform.Tizen/Extensions/DensityIndependentPixelExtensions.cs
new file mode 100644
index 00000000..96a49d02
--- /dev/null
+++ b/Xamarin.Forms.Platform.Tizen/Extensions/DensityIndependentPixelExtensions.cs
@@ -0,0 +1,31 @@
+using ERect = ElmSharp.Rect;
+using ESize = ElmSharp.Size;
+
+namespace Xamarin.Forms.Platform.Tizen
+{
+ /// <summary>
+ /// Extension class, provides DIP convert functionalities
+ /// </summary>
+ public static class DensityIndependentPixelExtensions
+ {
+ public static Rectangle ToDP(this ERect rect)
+ {
+ return new Rectangle(Forms.ConvertToScaledDP(rect.X), Forms.ConvertToScaledDP(rect.Y), Forms.ConvertToScaledDP(rect.Width), Forms.ConvertToScaledDP(rect.Height));
+ }
+
+ public static ERect ToPixel(this Rectangle rect)
+ {
+ return new ERect(Forms.ConvertToScaledPixel(rect.X), Forms.ConvertToScaledPixel(rect.Y), Forms.ConvertToScaledPixel(rect.Width), Forms.ConvertToScaledPixel(rect.Height));
+ }
+
+ public static Size ToDP(this ESize size)
+ {
+ return new Size(Forms.ConvertToScaledDP(size.Width), Forms.ConvertToScaledDP(size.Height));
+ }
+
+ public static ESize ToPixel(this Size size)
+ {
+ return new ESize(Forms.ConvertToScaledPixel(size.Width), Forms.ConvertToScaledPixel(size.Height));
+ }
+ }
+}
diff --git a/Xamarin.Forms.Platform.Tizen/Forms.cs b/Xamarin.Forms.Platform.Tizen/Forms.cs
index 892faf58..1a2d7bd6 100644
--- a/Xamarin.Forms.Platform.Tizen/Forms.cs
+++ b/Xamarin.Forms.Platform.Tizen/Forms.cs
@@ -17,6 +17,13 @@ namespace Xamarin.Forms.Platform.Tizen
TSystemInfo.TryGetValue<int>("http://tizen.org/feature/screen.dpi", out dpi);
return dpi;
});
+
+ static Lazy<double> s_elmScale = new Lazy<double>(() =>
+ {
+ // 72.0 is from EFL which is using fixed DPI value (72.0) to determine font size internally. Thus, we are restoring the size by deviding the DPI by 72.0 here.
+ return s_dpi.Value / 72.0 / Elementary.GetScale();
+ });
+
class TizenDeviceInfo : DeviceInfo
{
readonly Size pixelScreenSize;
@@ -68,6 +75,11 @@ namespace Xamarin.Forms.Platform.Tizen
TSystemInfo.TryGetValue("http://tizen.org/feature/screen.height", out height);
scalingFactor = 1.0; // scaling is disabled, we're using pixels as Xamarin's geometry units
+ if (_useDeviceIndependentPixel)
+ {
+ scalingFactor = s_dpi.Value / 160.0;
+ }
+
pixelScreenSize = new Size(width, height);
scaledScreenSize = new Size(width / scalingFactor, height / scalingFactor);
@@ -76,6 +88,8 @@ namespace Xamarin.Forms.Platform.Tizen
}
}
+ static bool _useDeviceIndependentPixel = false;
+
public static event EventHandler<ViewInitializedEventArgs> ViewInitialized;
public static FormsApplication Context
@@ -116,6 +130,12 @@ namespace Xamarin.Forms.Platform.Tizen
public static void Init(FormsApplication application)
{
+ Init(application, false);
+ }
+
+ public static void Init(FormsApplication application, bool useDeviceIndependentPixel)
+ {
+ _useDeviceIndependentPixel = useDeviceIndependentPixel;
SetupInit(application);
}
@@ -186,7 +206,7 @@ namespace Xamarin.Forms.Platform.Tizen
{
Device.Idiom = TargetIdiom.TV;
}
- else if ( profile == "desktop")
+ else if (profile == "desktop")
{
Device.Idiom = TargetIdiom.Desktop;
}
@@ -210,10 +230,78 @@ namespace Xamarin.Forms.Platform.Tizen
return Color.Black;
}
+ /// <summary>
+ /// Converts the dp into pixel considering current DPI value.
+ /// </summary>
+ /// <remarks>
+ /// Use this API if you want to get pixel size without scaling factor.
+ /// </remarks>
+ /// <param name="dp"></param>
+ /// <returns></returns>
internal static int ConvertToPixel(double dp)
{
return (int)Math.Round(dp * s_dpi.Value / 160.0);
}
+
+ /// <summary>
+ /// Converts the dp into pixel by using scaling factor.
+ /// </summary>
+ /// <remarks>
+ /// Use this API if you want to get pixel size from dp by using scaling factor.
+ /// If the scaling factor is 1.0 by user setting, the same value is returned. This is mean that user doesn't want to pixel independent metric.
+ /// </remarks>
+ /// <param name="dp"></param>
+ /// <returns></returns>
+ internal static int ConvertToScaledPixel(double dp)
+ {
+ return (int)Math.Round(dp * Device.Info.ScalingFactor);
+ }
+
+ /// <summary>
+ /// Converts the pixel into dp value by using scaling factor.
+ /// </summary>
+ /// <remarks>
+ /// If the scaling factor is 1.0 by user setting, the same value is returned. This is mean that user doesn't want to pixel independent metric.
+ /// </remarks>
+ /// <param name="pixel"></param>
+ /// <returns></returns>
+ internal static double ConvertToScaledDP(int pixel)
+ {
+ return pixel / Device.Info.ScalingFactor;
+ }
+
+ /// <summary>
+ /// Converts the pixel into dp value by using scaling factor.
+ /// </summary>
+ /// <remarks>
+ /// If the scaling factor is 1.0 by user setting, the same value is returned. This is mean that user doesn't want to pixel independent metric.
+ /// </remarks>
+ /// <param name="pixel"></param>
+ /// <returns></returns>
+ internal static double ConvertToScaledDP(double pixel)
+ {
+ return pixel / Device.Info.ScalingFactor;
+ }
+
+ /// <summary>
+ /// Converts the sp into EFL's font size metric (EFL point).
+ /// </summary>
+ /// <param name="sp"></param>
+ /// <returns></returns>
+ internal static int ConvertToEflFontPoint(double sp)
+ {
+ return (int)Math.Round(sp * s_elmScale.Value);
+ }
+
+ /// <summary>
+ /// Convert the EFL's point into sp.
+ /// </summary>
+ /// <param name="eflPt"></param>
+ /// <returns></returns>
+ internal static double ConvertToDPFont(int eflPt)
+ {
+ return eflPt / s_elmScale.Value;
+ }
}
class TizenExpressionSearch : ExpressionVisitor, IExpressionSearch
diff --git a/Xamarin.Forms.Platform.Tizen/Native/ListView.cs b/Xamarin.Forms.Platform.Tizen/Native/ListView.cs
index a94282ab..7947c3ed 100644
--- a/Xamarin.Forms.Platform.Tizen/Native/ListView.cs
+++ b/Xamarin.Forms.Platform.Tizen/Native/ListView.cs
@@ -587,11 +587,11 @@ namespace Xamarin.Forms.Platform.Tizen.Native
if (element.MinimumHeightRequest == -1)
{
SizeRequest request = element.Measure(double.PositiveInfinity, double.PositiveInfinity);
- renderer.NativeView.MinimumHeight = (int)request.Request.Height;
+ renderer.NativeView.MinimumHeight = Forms.ConvertToScaledPixel(request.Request.Height);
}
else
{
- renderer.NativeView.MinimumHeight = (int)element.MinimumHeightRequest;
+ renderer.NativeView.MinimumHeight = Forms.ConvertToScaledPixel(element.MinimumHeightRequest);
}
return renderer.NativeView;
diff --git a/Xamarin.Forms.Platform.Tizen/Native/Span.cs b/Xamarin.Forms.Platform.Tizen/Native/Span.cs
index 8120105f..99fe008e 100644
--- a/Xamarin.Forms.Platform.Tizen/Native/Span.cs
+++ b/Xamarin.Forms.Platform.Tizen/Native/Span.cs
@@ -183,7 +183,7 @@ namespace Xamarin.Forms.Platform.Tizen.Native
if (FontSize != -1)
{
- _formattingString.AppendFormat("font_size={0} ", Forms.ConvertToPixel(FontSize));
+ _formattingString.AppendFormat("font_size={0} ", Forms.ConvertToEflFontPoint(FontSize));
}
if ((FontAttributes & FontAttributes.Bold) != 0)
diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs
index 39f26b4f..456bb0d5 100644
--- a/Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs
+++ b/Xamarin.Forms.Platform.Tizen/Renderers/ButtonRenderer.cs
@@ -1,5 +1,6 @@
using System;
using EColor = ElmSharp.Color;
+using ESize = ElmSharp.Size;
using Specific = Xamarin.Forms.PlatformConfiguration.TizenSpecific.VisualElement;
namespace Xamarin.Forms.Platform.Tizen
@@ -46,7 +47,7 @@ namespace Xamarin.Forms.Platform.Tizen
protected override Size MinimumSize()
{
- return new Size(Control.MinimumWidth, Control.MinimumHeight);
+ return new ESize(Control.MinimumWidth, Control.MinimumHeight).ToDP();
}
void ButtonClickedHandler(object sender, EventArgs e)
diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/LayoutRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/LayoutRenderer.cs
index 61421c79..99e422e9 100644
--- a/Xamarin.Forms.Platform.Tizen/Renderers/LayoutRenderer.cs
+++ b/Xamarin.Forms.Platform.Tizen/Renderers/LayoutRenderer.cs
@@ -23,8 +23,8 @@ namespace Xamarin.Forms.Platform.Tizen
if (scrollView != null)
{
Size size = scrollView.ContentSize;
- Control.MinimumWidth = ToNativeDimension(Math.Max(size.Width, scrollView.Content.Width));
- Control.MinimumHeight = ToNativeDimension(Math.Max(size.Height, scrollView.Content.Height));
+ Control.MinimumWidth = Forms.ConvertToScaledPixel(Math.Max(size.Width, scrollView.Content.Width));
+ Control.MinimumHeight = Forms.ConvertToScaledPixel(Math.Max(size.Height, scrollView.Content.Height));
}
base.UpdateLayout();
diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/ScrollViewRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/ScrollViewRenderer.cs
index 11195386..f35a2753 100755..100644
--- a/Xamarin.Forms.Platform.Tizen/Renderers/ScrollViewRenderer.cs
+++ b/Xamarin.Forms.Platform.Tizen/Renderers/ScrollViewRenderer.cs
@@ -132,7 +132,7 @@ namespace Xamarin.Forms.Platform.Tizen
y = itemPosition.Y;
}
- Rect region = new Rect(ToNativeDimension(x), ToNativeDimension(y), ToNativeDimension(Element.Width), ToNativeDimension(Element.Height));
+ Rect region = new Rectangle(x, y, Element.Width, Element.Height).ToPixel();
Control.ScrollTo(region, e.ShouldAnimate);
}
}
diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/SearchBarRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/SearchBarRenderer.cs
index 798a0497..3c9734db 100644
--- a/Xamarin.Forms.Platform.Tizen/Renderers/SearchBarRenderer.cs
+++ b/Xamarin.Forms.Platform.Tizen/Renderers/SearchBarRenderer.cs
@@ -58,7 +58,7 @@ namespace Xamarin.Forms.Platform.Tizen
protected override Size MinimumSize()
{
- return new Size(250, 120);
+ return new Size(136, 65);
}
/// <summary>
diff --git a/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs b/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs
index 4bde705c..37a5fafb 100644
--- a/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs
+++ b/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs
@@ -9,7 +9,6 @@ using ERect = ElmSharp.Rect;
using ERectangle = ElmSharp.Rectangle;
using Specific = Xamarin.Forms.PlatformConfiguration.TizenSpecific.VisualElement;
-
namespace Xamarin.Forms.Platform.Tizen
{
/// <summary>
@@ -138,21 +137,26 @@ namespace Xamarin.Forms.Platform.Tizen
}
else
{
- int availableWidth = ToNativeDimension(widthConstraint);
- int availableHeight = ToNativeDimension(heightConstraint);
- ESize measured;
+ int availableWidth = Forms.ConvertToScaledPixel(widthConstraint);
+ int availableHeight = Forms.ConvertToScaledPixel(heightConstraint);
+
+ if (availableWidth < 0)
+ availableWidth = int.MaxValue;
+ if (availableHeight < 0)
+ availableHeight = int.MaxValue;
+ Size measured;
var nativeViewMeasurable = NativeView as Native.IMeasurable;
if (nativeViewMeasurable != null)
{
- measured = nativeViewMeasurable.Measure(availableWidth, availableHeight);
+ measured = nativeViewMeasurable.Measure(availableWidth, availableHeight).ToDP();
}
else
{
- measured = Measure(availableWidth, availableHeight);
+ measured = Measure(availableWidth, availableHeight).ToDP();
}
- return new SizeRequest(new Size(measured.Width, measured.Height), MinimumSize());
+ return new SizeRequest(measured, MinimumSize());
}
}
@@ -203,7 +207,7 @@ namespace Xamarin.Forms.Platform.Tizen
{
var x = ComputeAbsoluteX(Element);
var y = ComputeAbsoluteY(Element);
- NativeView.Geometry = new ERect(ToNativeDimension(x), ToNativeDimension(y), ToNativeDimension(Element.Width), ToNativeDimension(Element.Height));
+ NativeView.Geometry = new Rectangle(x, y, Element.Width, Element.Height).ToPixel();
ApplyTransformation();
UpdateOpacityLayer();
}
@@ -545,7 +549,8 @@ namespace Xamarin.Forms.Platform.Tizen
protected void DoLayout(Native.LayoutEventArgs e)
{
Settings.StartIgnoringBatchCommitted();
- Element.Layout(new Rectangle(Element.X, Element.Y, e.Width, e.Height));
+
+ Element.Layout(new Rectangle(Element.X, Element.Y, Forms.ConvertToScaledDP(e.Width), Forms.ConvertToScaledDP(e.Height)));
if (e.HasChanged)
{
UpdateLayout();
@@ -579,24 +584,14 @@ namespace Xamarin.Forms.Platform.Tizen
}
}
- /// <summary>
- /// Converts provided value to native dimension.
- /// </summary>
- /// <param name="v">value to be converted.</param>
- /// <returns>converted value</returns>
- protected static int ToNativeDimension(double v)
- {
- return (int)Math.Round(v);
- }
-
static double ComputeAbsoluteX(VisualElement e)
{
- return e.X + (e.RealParent is VisualElement ? Platform.GetRenderer(e.RealParent).NativeView.Geometry.X : 0.0);
+ return e.X + (e.RealParent is VisualElement ? Forms.ConvertToScaledDP(Platform.GetRenderer(e.RealParent).NativeView.Geometry.X) : 0.0);
}
static double ComputeAbsoluteY(VisualElement e)
{
- return e.Y + (e.RealParent is VisualElement ? Platform.GetRenderer(e.RealParent).NativeView.Geometry.Y : 0.0);
+ return e.Y + (e.RealParent is VisualElement ? Forms.ConvertToScaledDP(Platform.GetRenderer(e.RealParent).NativeView.Geometry.Y) : 0.0);
}
/// <summary>
@@ -830,8 +825,8 @@ namespace Xamarin.Forms.Platform.Tizen
void ApplyTranslation(EvasMap map, ERect geometry, ref bool changed)
{
- var shiftX = ToNativeDimension(Element.TranslationX);
- var shiftY = ToNativeDimension(Element.TranslationY);
+ var shiftX = Forms.ConvertToScaledPixel(Element.TranslationX);
+ var shiftY = Forms.ConvertToScaledPixel(Element.TranslationY);
// apply translation, i.e. move/shift the object a little
if (shiftX != 0 || shiftY != 0)
diff --git a/Xamarin.Forms.Platform.Tizen/TizenPlatformServices.cs b/Xamarin.Forms.Platform.Tizen/TizenPlatformServices.cs
index f3a72d02..a34c2faa 100644
--- a/Xamarin.Forms.Platform.Tizen/TizenPlatformServices.cs
+++ b/Xamarin.Forms.Platform.Tizen/TizenPlatformServices.cs
@@ -50,15 +50,15 @@ namespace Xamarin.Forms.Platform.Tizen
public double GetNamedSize(NamedSize size, Type targetElementType, bool useOldSizes)
{
- double baseSize = 10;
- double baseSizeSpan = 2;
+ double baseSize = Forms.ConvertToDPFont(19);
+ double baseSizeSpan = 3;
// In case of TV profile The base named size sholud be lager than mobile profile
- if (Device.Idiom == TargetIdiom.TV)
+ if (Device.Idiom != TargetIdiom.Phone)
{
// TODO: These valuse should be updated when TV profile UX guideline released.
- baseSize = 60;
- baseSizeSpan = 5;
+ baseSize = 50;
+ baseSizeSpan = 12;
}
switch (size)
diff --git a/Xamarin.Forms.Platform.Tizen/Xamarin.Forms.Platform.Tizen.csproj b/Xamarin.Forms.Platform.Tizen/Xamarin.Forms.Platform.Tizen.csproj
index 0096bc47..c51c4e78 100644
--- a/Xamarin.Forms.Platform.Tizen/Xamarin.Forms.Platform.Tizen.csproj
+++ b/Xamarin.Forms.Platform.Tizen/Xamarin.Forms.Platform.Tizen.csproj
@@ -51,6 +51,7 @@
<Compile Include="Extensions\PlatformConfigurationExtensions.cs" />
<Compile Include="Extensions\ColorExtensions.cs" />
<Compile Include="Extensions\KeyboardExtensions.cs" />
+ <Compile Include="Extensions\DensityIndependentPixelExtensions.cs" />
<Compile Include="Extensions\LayoutExtensions.cs" />
<Compile Include="Extensions\NativeBindingExtensions.cs" />
<Compile Include="Extensions\ScrollToPositionExtensions.cs" />
diff --git a/packaging/xamarin-forms-tizen.spec b/packaging/xamarin-forms-tizen.spec
index d718bf33..a8ade354 100644
--- a/packaging/xamarin-forms-tizen.spec
+++ b/packaging/xamarin-forms-tizen.spec
@@ -1,7 +1,7 @@
%define XF_VERSION 2.3.4
# Increase this XF_TIZEN_VERSION when any public APIs of Xamarin.Forms.Platform.Tizen are changed.
-%define XF_TIZEN_VERSION r192-001
+%define XF_TIZEN_VERSION r192-002
Name: xamarin-forms-tizen
Summary: Xamarin.Forms for Tizen platform