diff options
author | Seungkeun Lee <sngn.lee@samsung.com> | 2017-02-08 10:17:28 +0900 |
---|---|---|
committer | Kangho Hur <kangho.hur@samsung.com> | 2017-10-23 13:34:29 +0900 |
commit | 7d87cbbf4de0c5d5699f66fea699ca094a940f68 (patch) | |
tree | 26f79e0a2bdd08fac368c50418af5f3e87831cf2 /Xamarin.Forms.Platform.Tizen/Renderers/VisualElementRenderer.cs | |
parent | 1a7f25b6fdb3b14036469e932edb396448db3e16 (diff) | |
download | xamarin-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.cs | 41 |
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) |