summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs
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-10-23 13:34:29 +0900
commit7d87cbbf4de0c5d5699f66fea699ca094a940f68 (patch)
tree26f79e0a2bdd08fac368c50418af5f3e87831cf2 /Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs
parent1a7f25b6fdb3b14036469e932edb396448db3e16 (diff)
downloadxamarin-forms-7d87cbbf4de0c5d5699f66fea699ca094a940f68.tar.gz
xamarin-forms-7d87cbbf4de0c5d5699f66fea699ca094a940f68.tar.bz2
xamarin-forms-7d87cbbf4de0c5d5699f66fea699ca094a940f68.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
Diffstat (limited to 'Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs')
-rw-r--r--Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs41
1 files changed, 18 insertions, 23 deletions
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)