summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android/Renderers
diff options
context:
space:
mode:
authorRui Marinho <me@ruimarinho.net>2017-04-06 14:19:52 +0100
committerGitHub <noreply@github.com>2017-04-06 14:19:52 +0100
commit425fafb05723a299a5eaa0f6d801f87bdf7141fa (patch)
treea9e38aa0a0252e6a6d2da6990303d82f2163a5a9 /Xamarin.Forms.Platform.Android/Renderers
parent829a4bda76166ddffce5a0e84538183b9527a1bd (diff)
downloadxamarin-forms-425fafb05723a299a5eaa0f6d801f87bdf7141fa.tar.gz
xamarin-forms-425fafb05723a299a5eaa0f6d801f87bdf7141fa.tar.bz2
xamarin-forms-425fafb05723a299a5eaa0f6d801f87bdf7141fa.zip
Android fastrenderers (#845)
* Obsolete IVisualElementRenderer.ViewGroup in favor of .View * Fix NRE * Changing TContainer in PlatformEffect to View * Fix "View" type * new VisualElementRenderer * First attempt at a fast(er) button renderer * Fast Label Renderer * Let's try that again. Behold: Label Fast Renderer * Move FrameRenderer into Fast Renderers * Fix Disposable on VisualElementRenderer * Simplify touch and click handlers * Drop empty if clause * [Android] Add initial Image fast renderer * Split accessibility out to a separate helper class; fix tapgesture bug with label * [Android] Small fixes to VisualElementRenderer * Move accessiblity stuff to a separate class (which needs a good name) * Prevent query from looking to parent for fast renderers * [Android] ImageRenderer refactoring * Fix elevation/z-index bugs with Button (e.g., 40173) * Move SetLabeledBy to Accessibilitizer * Un-break automation IDs for Labels * Move gesture handling to its own class * Split gesture and effect management into separate classes * Remove unneeded packager from LabelRenderer * LabelRenderer inherits from FormsTextView * Batch updates to View * Fix isOnParentRenderer check for non-Android platforms * [Controls] Update Xamarin.Forms.ControlGallery.iOS.csproj * [Android,IOS] Small fixes to rebase and use of Internals * [Android] Ignroe warning for now * Fast renderers now passing InputTransparent and IsEnabled tests * Fast and legacy renderers now pass the Enabled and InputTransparent tests * Change PlatformEffect back, default container to null * Fix mangled using directives
Diffstat (limited to 'Xamarin.Forms.Platform.Android/Renderers')
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs1
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/CarouselPageAdapter.cs6
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ConditionalFocusLayout.cs10
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/FormsImageView.cs2
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/FormsTextView.cs2
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs82
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs10
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/MasterDetailContainer.cs10
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/MasterDetailRenderer.cs14
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs8
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/PageContainer.cs6
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ScrollViewContainer.cs6
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/ScrollViewRenderer.cs17
-rw-r--r--Xamarin.Forms.Platform.Android/Renderers/TabbedRenderer.cs2
14 files changed, 75 insertions, 101 deletions
diff --git a/Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs
index e07a2be5..7bb97945 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/ButtonRenderer.cs
@@ -26,6 +26,7 @@ namespace Xamarin.Forms.Platform.Android
public ButtonRenderer()
{
+ System.Diagnostics.Debug.WriteLine("Slow Button!");
AutoPackage = false;
}
diff --git a/Xamarin.Forms.Platform.Android/Renderers/CarouselPageAdapter.cs b/Xamarin.Forms.Platform.Android/Renderers/CarouselPageAdapter.cs
index efee571d..c31e8e69 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/CarouselPageAdapter.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/CarouselPageAdapter.cs
@@ -55,7 +55,7 @@ namespace Xamarin.Forms.Platform.Android
Page destroyedPage = holder.Instance.Item2;
IVisualElementRenderer renderer = Platform.GetRenderer(destroyedPage);
- renderer.ViewGroup.RemoveFromParent();
+ renderer.View.RemoveFromParent();
holder.Instance.Item1.RemoveFromParent();
}
@@ -90,7 +90,7 @@ namespace Xamarin.Forms.Platform.Android
Platform.SetRenderer(child, Platform.CreateRenderer(child));
IVisualElementRenderer renderer = Platform.GetRenderer(child);
- renderer.ViewGroup.RemoveFromParent();
+ renderer.View.RemoveFromParent();
ViewGroup frame = new PageContainer(_context, renderer);
@@ -130,7 +130,7 @@ namespace Xamarin.Forms.Platform.Android
IVisualElementRenderer childPageRenderer = Platform.GetRenderer(childPage);
if (childPageRenderer != null)
{
- childPageRenderer.ViewGroup.RemoveFromParent();
+ childPageRenderer.View.RemoveFromParent();
childPageRenderer.Dispose();
Platform.SetRenderer(childPage, null);
}
diff --git a/Xamarin.Forms.Platform.Android/Renderers/ConditionalFocusLayout.cs b/Xamarin.Forms.Platform.Android/Renderers/ConditionalFocusLayout.cs
index 311db6b8..5b3002ce 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/ConditionalFocusLayout.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/ConditionalFocusLayout.cs
@@ -30,7 +30,7 @@ namespace Xamarin.Forms.Platform.Android
return;
IVisualElementRenderer renderer = Platform.GetRenderer(viewCell.View);
- (renderer?.ViewGroup?.GetChildAt(0) as EditText)?.SetOnTouchListener(this);
+ GetEditText(renderer)?.SetOnTouchListener(this);
foreach (Element descendant in viewCell.View.Descendants())
{
@@ -38,8 +38,14 @@ namespace Xamarin.Forms.Platform.Android
if (element == null)
continue;
renderer = Platform.GetRenderer(element);
- (renderer?.ViewGroup?.GetChildAt(0) as EditText)?.SetOnTouchListener(this);
+ GetEditText(renderer)?.SetOnTouchListener(this);
}
}
+
+ internal EditText GetEditText(IVisualElementRenderer renderer)
+ {
+ var viewGroup = renderer?.View as ViewGroup;
+ return viewGroup?.GetChildAt(0) as EditText;
+ }
}
} \ No newline at end of file
diff --git a/Xamarin.Forms.Platform.Android/Renderers/FormsImageView.cs b/Xamarin.Forms.Platform.Android/Renderers/FormsImageView.cs
index ae32e16c..dc0bd2fc 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/FormsImageView.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/FormsImageView.cs
@@ -5,7 +5,7 @@ using Android.Widget;
namespace Xamarin.Forms.Platform.Android
{
- internal class FormsImageView : ImageView
+ internal class FormsImageView : ImageView, IImageRendererController
{
bool _skipInvalidate;
diff --git a/Xamarin.Forms.Platform.Android/Renderers/FormsTextView.cs b/Xamarin.Forms.Platform.Android/Renderers/FormsTextView.cs
index 1dc25ea9..2b2bcb7a 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/FormsTextView.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/FormsTextView.cs
@@ -6,7 +6,7 @@ using Android.Widget;
namespace Xamarin.Forms.Platform.Android
{
- internal class FormsTextView : TextView
+ public class FormsTextView : TextView
{
bool _skip;
diff --git a/Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs
index fee05f1b..57937d89 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/ImageRenderer.cs
@@ -1,14 +1,18 @@
using System;
using System.ComponentModel;
-using System.IO;
-using System.Threading.Tasks;
using Android.Graphics;
using Android.Views;
using AImageView = Android.Widget.ImageView;
using Xamarin.Forms.Internals;
+using static Xamarin.Forms.Platform.Android.ImageViewExtensions;
namespace Xamarin.Forms.Platform.Android
{
+ internal interface IImageRendererController
+ {
+ void SkipInvalidate();
+ }
+
public class ImageRenderer : ViewRenderer<Image, AImageView>
{
bool _isDisposed;
@@ -16,6 +20,7 @@ namespace Xamarin.Forms.Platform.Android
public ImageRenderer()
{
+ System.Diagnostics.Debug.WriteLine(">>>>> Old Image Renderer");
AutoPackage = false;
}
@@ -45,8 +50,9 @@ namespace Xamarin.Forms.Platform.Android
}
_motionEventHelper.UpdateElement(e.NewElement);
+
+ Control.UpdateBitmap(e.NewElement, e.OldElement);
- UpdateBitmap(e.OldElement);
UpdateAspect();
}
@@ -55,7 +61,7 @@ namespace Xamarin.Forms.Platform.Android
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == Image.SourceProperty.PropertyName)
- UpdateBitmap();
+ Control.UpdateBitmap(Element);
else if (e.PropertyName == Image.AspectProperty.PropertyName)
UpdateAspect();
}
@@ -66,66 +72,12 @@ namespace Xamarin.Forms.Platform.Android
Control.SetScaleType(type);
}
- async void UpdateBitmap(Image previous = null)
- {
- if (Device.IsInvokeRequired)
- throw new InvalidOperationException("Image Bitmap must not be updated from background thread");
-
- if (previous != null && Equals(previous.Source, Element.Source))
- return;
-
- ((IImageController)Element).SetIsLoading(true);
+ public override bool OnTouchEvent(MotionEvent e)
+ {
+ if (base.OnTouchEvent(e))
+ return true;
- var formsImageView = Control as FormsImageView;
- formsImageView?.SkipInvalidate();
-
- Control.SetImageResource(global::Android.Resource.Color.Transparent);
-
- ImageSource source = Element.Source;
- Bitmap bitmap = null;
- IImageSourceHandler handler;
-
- if (source != null && (handler = Internals.Registrar.Registered.GetHandler<IImageSourceHandler>(source.GetType())) != null)
- {
- try
- {
- bitmap = await handler.LoadImageAsync(source, Context);
- }
- catch (TaskCanceledException)
- {
- }
- catch (IOException ex)
- {
- Log.Warning("Xamarin.Forms.Platform.Android.ImageRenderer", "Error updating bitmap: {0}", ex);
- }
- }
-
- if (Element == null || !Equals(Element.Source, source))
- {
- bitmap?.Dispose();
- return;
- }
-
- if (!_isDisposed)
- {
- if (bitmap == null && source is FileImageSource)
- Control.SetImageResource(ResourceManager.GetDrawableByName(((FileImageSource)source).File));
- else
- Control.SetImageBitmap(bitmap);
-
- bitmap?.Dispose();
-
- ((IImageController)Element).SetIsLoading(false);
- ((IVisualElementController)Element).NativeSizeChanged();
- }
- }
-
- public override bool OnTouchEvent(MotionEvent e)
- {
- if (base.OnTouchEvent(e))
- return true;
-
- return _motionEventHelper.HandleMotionEvent(Parent);
- }
- }
+ return _motionEventHelper.HandleMotionEvent(Parent);
+ }
+ }
} \ No newline at end of file
diff --git a/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs
index a0906915..bd241c1a 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/ListViewRenderer.cs
@@ -45,14 +45,14 @@ namespace Xamarin.Forms.Platform.Android
if (_headerRenderer != null)
{
- _headerRenderer.ViewGroup.RemoveAllViews();
+ (_headerRenderer.View as ViewGroup)?.RemoveAllViews();
_headerRenderer.Dispose();
_headerRenderer = null;
}
if (_footerRenderer != null)
{
- _footerRenderer.ViewGroup.RemoveAllViews();
+ (_footerRenderer.View as ViewGroup)?.RemoveAllViews();
_footerRenderer.Dispose();
_footerRenderer = null;
}
@@ -352,12 +352,12 @@ namespace Xamarin.Forms.Platform.Android
set
{
if (_child != null)
- RemoveView(_child.ViewGroup);
+ RemoveView(_child.View);
_child = value;
if (value != null)
- AddView(value.ViewGroup);
+ AddView(value.View);
}
}
@@ -389,7 +389,7 @@ namespace Xamarin.Forms.Platform.Android
int widthSpec = MeasureSpecFactory.MakeMeasureSpec((int)ctx.ToPixels(width), MeasureSpecMode.Exactly);
int heightSpec = MeasureSpecFactory.MakeMeasureSpec((int)ctx.ToPixels(request.Request.Height), MeasureSpecMode.Exactly);
- _child.ViewGroup.Measure(widthMeasureSpec, heightMeasureSpec);
+ _child.View.Measure(widthMeasureSpec, heightMeasureSpec);
SetMeasuredDimension(widthSpec, heightSpec);
}
}
diff --git a/Xamarin.Forms.Platform.Android/Renderers/MasterDetailContainer.cs b/Xamarin.Forms.Platform.Android/Renderers/MasterDetailContainer.cs
index a7bebf1e..fd028df1 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/MasterDetailContainer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/MasterDetailContainer.cs
@@ -54,12 +54,12 @@ namespace Xamarin.Forms.Platform.Android
if (renderer == null)
Platform.SetRenderer(childView, renderer = Platform.CreateRenderer(childView));
- if (renderer.ViewGroup.Parent != this)
+ if (renderer.View.Parent != this)
{
- if (renderer.ViewGroup.Parent != null)
- renderer.ViewGroup.RemoveFromParent();
+ if (renderer.View.Parent != null)
+ renderer.View.RemoveFromParent();
SetDefaultBackgroundColor(renderer);
- AddView(renderer.ViewGroup);
+ AddView(renderer.View);
renderer.UpdateLayout();
}
}
@@ -148,7 +148,7 @@ namespace Xamarin.Forms.Platform.Android
if (ChildView.BackgroundColor == Color.Default)
{
TypedArray colors = Context.Theme.ObtainStyledAttributes(new[] { global::Android.Resource.Attribute.ColorBackground });
- renderer.ViewGroup.SetBackgroundColor(new global::Android.Graphics.Color(colors.GetColor(0, 0)));
+ renderer.View.SetBackgroundColor(new global::Android.Graphics.Color(colors.GetColor(0, 0)));
}
}
}
diff --git a/Xamarin.Forms.Platform.Android/Renderers/MasterDetailRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/MasterDetailRenderer.cs
index d18781a7..7e744bc7 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/MasterDetailRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/MasterDetailRenderer.cs
@@ -73,6 +73,13 @@ namespace Xamarin.Forms.Platform.Android
public event EventHandler<VisualElementChangedEventArgs> ElementChanged;
+ event EventHandler<PropertyChangedEventArgs> ElementPropertyChanged;
+ event EventHandler<PropertyChangedEventArgs> IVisualElementRenderer.ElementPropertyChanged
+ {
+ add { ElementPropertyChanged += value; }
+ remove { ElementPropertyChanged -= value; }
+ }
+
public SizeRequest GetDesiredSize(int widthConstraint, int heightConstraint)
{
Measure(widthConstraint, heightConstraint);
@@ -142,10 +149,8 @@ namespace Xamarin.Forms.Platform.Android
Tracker.UpdateLayout();
}
- public ViewGroup ViewGroup
- {
- get { return this; }
- }
+ public ViewGroup ViewGroup => this;
+ AView IVisualElementRenderer.View => this;
protected override void Dispose(bool disposing)
{
@@ -237,6 +242,7 @@ namespace Xamarin.Forms.Platform.Android
void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
{
+ ElementPropertyChanged?.Invoke(this, e);
if (e.PropertyName == "Master")
UpdateMaster();
else if (e.PropertyName == "Detail")
diff --git a/Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs
index bf6540b9..5d678287 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/NavigationRenderer.cs
@@ -183,13 +183,13 @@ namespace Xamarin.Forms.Platform.Android
void RemovePage(Page page)
{
IVisualElementRenderer rendererToRemove = Platform.GetRenderer(page);
- PageContainer containerToRemove = rendererToRemove == null ? null : (PageContainer)rendererToRemove.ViewGroup.Parent;
+ PageContainer containerToRemove = rendererToRemove == null ? null : (PageContainer)rendererToRemove.View.Parent;
containerToRemove.RemoveFromParent();
if (rendererToRemove != null)
{
- rendererToRemove.ViewGroup.RemoveFromParent();
+ rendererToRemove.View.RemoveFromParent();
rendererToRemove.Dispose();
}
@@ -213,8 +213,8 @@ namespace Xamarin.Forms.Platform.Android
Page pageToRemove = _current;
IVisualElementRenderer rendererToRemove = pageToRemove == null ? null : Platform.GetRenderer(pageToRemove);
- PageContainer containerToRemove = rendererToRemove == null ? null : (PageContainer)rendererToRemove.ViewGroup.Parent;
- PageContainer containerToAdd = (PageContainer)rendererToAdd.ViewGroup.Parent ?? new PageContainer(Context, rendererToAdd);
+ PageContainer containerToRemove = rendererToRemove == null ? null : (PageContainer)rendererToRemove.View.Parent;
+ PageContainer containerToAdd = (PageContainer)rendererToAdd.View.Parent ?? new PageContainer(Context, rendererToAdd);
containerToAdd.SetWindowBackground();
diff --git a/Xamarin.Forms.Platform.Android/Renderers/PageContainer.cs b/Xamarin.Forms.Platform.Android/Renderers/PageContainer.cs
index 06e33e18..a4e77361 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/PageContainer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/PageContainer.cs
@@ -7,7 +7,7 @@ namespace Xamarin.Forms.Platform.Android
{
public PageContainer(Context context, IVisualElementRenderer child, bool inFragment = false) : base(context)
{
- AddView(child.ViewGroup);
+ AddView(child.View);
Child = child;
IsInFragment = inFragment;
}
@@ -23,8 +23,8 @@ namespace Xamarin.Forms.Platform.Android
protected override void OnMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
- Child.ViewGroup.Measure(widthMeasureSpec, heightMeasureSpec);
- SetMeasuredDimension(Child.ViewGroup.MeasuredWidth, Child.ViewGroup.MeasuredHeight);
+ Child.View.Measure(widthMeasureSpec, heightMeasureSpec);
+ SetMeasuredDimension(Child.View.MeasuredWidth, Child.View.MeasuredHeight);
}
}
} \ No newline at end of file
diff --git a/Xamarin.Forms.Platform.Android/Renderers/ScrollViewContainer.cs b/Xamarin.Forms.Platform.Android/Renderers/ScrollViewContainer.cs
index c79e6137..c9354ce2 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/ScrollViewContainer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/ScrollViewContainer.cs
@@ -32,10 +32,10 @@ namespace Xamarin.Forms.Platform.Android
if ((renderer = Platform.GetRenderer(_childView)) == null)
Platform.SetRenderer(_childView, renderer = Platform.CreateRenderer(_childView));
- if (renderer.ViewGroup.Parent != null)
- renderer.ViewGroup.RemoveFromParent();
+ if (renderer.View.Parent != null)
+ renderer.View.RemoveFromParent();
- AddView(renderer.ViewGroup);
+ AddView(renderer.View);
}
}
diff --git a/Xamarin.Forms.Platform.Android/Renderers/ScrollViewRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/ScrollViewRenderer.cs
index b7961411..69020de6 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/ScrollViewRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/ScrollViewRenderer.cs
@@ -7,6 +7,7 @@ using Android.Views;
using Android.Widget;
using Xamarin.Forms.Internals;
using AScrollView = Android.Widget.ScrollView;
+using AView = Android.Views.View;
namespace Xamarin.Forms.Platform.Android
{
@@ -39,6 +40,13 @@ namespace Xamarin.Forms.Platform.Android
public event EventHandler<VisualElementChangedEventArgs> ElementChanged;
+ event EventHandler<PropertyChangedEventArgs> ElementPropertyChanged;
+ event EventHandler<PropertyChangedEventArgs> IVisualElementRenderer.ElementPropertyChanged
+ {
+ add { ElementPropertyChanged += value; }
+ remove { ElementPropertyChanged -= value; }
+ }
+
public SizeRequest GetDesiredSize(int widthConstraint, int heightConstraint)
{
Measure(widthConstraint, heightConstraint);
@@ -90,10 +98,9 @@ namespace Xamarin.Forms.Platform.Android
Tracker.UpdateLayout();
}
- public ViewGroup ViewGroup
- {
- get { return this; }
- }
+ public ViewGroup ViewGroup => this;
+
+ AView IVisualElementRenderer.View => this;
public override void Draw(Canvas canvas)
{
@@ -239,6 +246,8 @@ namespace Xamarin.Forms.Platform.Android
void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
{
+ ElementPropertyChanged?.Invoke(this, e);
+
if (e.PropertyName == "Content")
LoadContent();
else if (e.PropertyName == VisualElement.BackgroundColorProperty.PropertyName)
diff --git a/Xamarin.Forms.Platform.Android/Renderers/TabbedRenderer.cs b/Xamarin.Forms.Platform.Android/Renderers/TabbedRenderer.cs
index f2878a80..2d5f3b02 100644
--- a/Xamarin.Forms.Platform.Android/Renderers/TabbedRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/Renderers/TabbedRenderer.cs
@@ -71,7 +71,7 @@ namespace Xamarin.Forms.Platform.Android
if (Platform.GetRenderer(view) == null)
Platform.SetRenderer(view, Platform.CreateRenderer(view));
- AddView(Platform.GetRenderer(view).ViewGroup);
+ AddView(Platform.GetRenderer(view).View);
}
}
} \ No newline at end of file