Ejemplo n.º 1
0
            internal nfloat CalculateHeightForCell(UITableView tableView, Cell cell)
            {
                var viewCell = cell as ViewCell;

                if (viewCell != null && viewCell.View != null)
                {
                    var target = viewCell.View;
                    if (_prototype == null)
                    {
                        _prototype = Platform.CreateRenderer(target);
                        Platform.SetRenderer(target, _prototype);
                    }
                    else
                    {
                        _prototype.SetElement(target);
                        Platform.SetRenderer(target, _prototype);
                    }

                    var req = target.Measure(tableView.Frame.Width, double.PositiveInfinity, MeasureFlags.IncludeMargins);

                    target.ClearValue(Platform.RendererProperty);
                    foreach (var descendant in target.Descendants())
                    {
                        descendant.ClearValue(Platform.RendererProperty);
                    }

                    return((nfloat)req.Request.Height);
                }
                var renderHeight = cell.RenderHeight;

                return(renderHeight > 0 ? (nfloat)renderHeight : DefaultRowHeight);
            }
Ejemplo n.º 2
0
        internal static IVisualElementRenderer CreateRenderer(VisualElement element)
        {
            IVisualElementRenderer renderer = Registrar.Registered.GetHandlerForObject <IVisualElementRenderer>(element) ?? new DefaultRenderer();

            renderer.SetElement(element);
            return(renderer);
        }
Ejemplo n.º 3
0
        public static IVisualElementRenderer CreateRenderer(VisualElement element)
        {
            IVisualElementRenderer result = Registrar.Registered.GetHandlerForObject <IVisualElementRenderer>(element) ?? new ViewRenderer();

            result.SetElement(element);
            return(result);
        }
Ejemplo n.º 4
0
 private void UpdateRenderers(Element newElement)
 {
     if (newElement.LogicalChildren.Count == 0)
     {
         return;
     }
     foreach (NSView uiView in this.parent.NativeView.Subviews)
     {
         IVisualElementRenderer visualElementRenderer = uiView as IVisualElementRenderer;
         if (visualElementRenderer != null)
         {
             int           index         = (int)visualElementRenderer.NativeView.Layer.ZPosition / 1000;
             VisualElement visualElement = newElement.LogicalChildren[index] as VisualElement;
             if (visualElement != null)
             {
                 if (visualElementRenderer.Element != null && visualElementRenderer == Platform.GetRenderer(visualElementRenderer.Element))
                 {
                     visualElementRenderer.Element.ClearValue(Platform.RendererProperty);
                 }
                 visualElementRenderer.SetElement(visualElement);
                 Platform.SetRenderer(visualElement, visualElementRenderer);
             }
         }
     }
 }
Ejemplo n.º 5
0
        public static IVisualElementRenderer CreateRenderer(VisualElement element)
        {
            IVisualElementRenderer result = Registrar.Registered.GetHandler <IVisualElementRenderer>(element.GetType()) ?? new DefaultViewRenderer();

            result.SetElement(element);
            return(result);
        }
        internal static IVisualElementRenderer AttachRenderer(VisualElement view)
        {
            IVisualElementRenderer visualElementRenderer = Registrar.Registered.GetHandlerForObject <IVisualElementRenderer>(view) ?? new DefaultRenderer();

            visualElementRenderer.SetElement(view);

            return(visualElementRenderer);
        }
        void AddChild(VisualElement view, IVisualElementRenderer oldRenderer = null, RendererPool pool = null, bool sameChildren = false)
        {
            var reference = Guid.NewGuid().ToString();

            Performance.Start(reference);

            if (CompressedLayout.GetIsHeadless(view))
            {
                var packager = new VisualElementPackager(_renderer, view);
                if (_childPackagers == null)
                {
                    _childPackagers = new Dictionary <BindableObject, VisualElementPackager>();
                }
                view.IsPlatformEnabled = true;
                packager.Load();

                _childPackagers[view] = packager;
            }
            else
            {
                if (_childViews == null)
                {
                    _childViews = new List <IVisualElementRenderer>();
                }

                IVisualElementRenderer renderer = oldRenderer;
                if (pool != null)
                {
                    renderer = pool.GetFreeRenderer(view);
                }
                if (renderer == null)
                {
                    Performance.Start(reference, "New renderer");
                    renderer = Platform.CreateRenderer(view, _renderer.View.Context);
                    Performance.Stop(reference, "New renderer");
                }

                if (renderer == oldRenderer)
                {
                    Platform.SetRenderer(renderer.Element, null);
                    renderer.SetElement(view);
                }

                Performance.Start(reference, "Set renderer");
                Platform.SetRenderer(view, renderer);
                Performance.Stop(reference, "Set renderer");

                Performance.Start(reference, "Add view");
                if (!sameChildren)
                {
                    (_renderer.View as ViewGroup)?.AddView(renderer.View);
                    _childViews.Add(renderer);
                }
                Performance.Stop(reference, "Add view");

                Performance.Stop(reference);
            }
        }
Ejemplo n.º 8
0
        internal static IVisualElementRenderer CreateRenderer(VisualElement element, Context context)
        {
            IVisualElementRenderer renderer = Registrar.Registered.GetHandler <IVisualElementRenderer>(element.GetType(), context)
                                              ?? new DefaultRenderer(context);

            renderer.SetElement(element);

            return(renderer);
        }
        internal static IVisualElementRenderer CreateRenderer(VisualElement element, Context context)
        {
            IVisualElementRenderer renderer = Xamarin.Forms.Internals.Registrar.Registered.GetHandlerForObject <IVisualElementRenderer>(element, context)
                                              ?? new DefaultRenderer(context);

            renderer.SetElement(element);

            return(renderer);
        }
Ejemplo n.º 10
0
        public static IVisualElementRenderer CreateRenderer(VisualElement element)
        {
            UpdateGlobalContext(element);

            IVisualElementRenderer renderer = Registrar.Registered.GetHandler <IVisualElementRenderer>(element.GetType()) ?? new DefaultRenderer();

            renderer.SetElement(element);

            return(renderer);
        }
Ejemplo n.º 11
0
        internal static IVisualElementRenderer CreateRenderer(VisualElement element, RenderHandle renderHandle = default)
        {
            IVisualElementRenderer renderer = Registrar.Registered.GetHandlerForObject <IVisualElementRenderer>(element) ?? new DefaultRenderer();
            var componentContainer          = ((ComponentContainer)renderer.ComponentContainer);

            componentContainer._renderHandle = renderHandle;
            //renderer.ComponentContainer.Configure(renderHandle);

            renderer.SetElement(element);
            return(renderer);
        }
Ejemplo n.º 12
0
        internal static IVisualElementRenderer CreateRenderer(VisualElement element, AndroidX.Fragment.App.FragmentManager fragmentManager, Context context)
        {
            IVisualElementRenderer renderer = CreateRenderer(element, context);

            var managesFragments = renderer as IManageFragments;

            managesFragments?.SetFragmentManager(fragmentManager);

            renderer.SetElement(element);

            return(renderer);
        }
Ejemplo n.º 13
0
        public static IVisualElementRenderer CreateRenderer(VisualElement element)
        {
            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            IVisualElementRenderer renderer = Registrar.Registered.GetHandler <IVisualElementRenderer>(element.GetType()) ?? new DefaultRenderer();

            renderer.SetElement(element);
            return(renderer);
        }
Ejemplo n.º 14
0
        internal static IVisualElementRenderer CreateRenderer(VisualElement element, FragmentManager fragmentManager, Context context)
        {
            IVisualElementRenderer renderer = Registrar.Registered.GetHandler <IVisualElementRenderer>(element.GetType(), context) ?? new DefaultRenderer(context);

            var managesFragments = renderer as IManageFragments;

            managesFragments?.SetFragmentManager(fragmentManager);

            renderer.SetElement(element);

            return(renderer);
        }
Ejemplo n.º 15
0
        internal static IVisualElementRenderer CreateRenderer(VisualElement element, FragmentManager fragmentManager)
        {
            UpdateGlobalContext(element);

            IVisualElementRenderer renderer = Registrar.Registered.GetHandlerForObject <IVisualElementRenderer>(element) ?? new DefaultRenderer();

            var managesFragments = renderer as IManageFragments;

            managesFragments?.SetFragmentManager(fragmentManager);

            renderer.SetElement(element);

            return(renderer);
        }
Ejemplo n.º 16
0
        void AddChild(VisualElement view, IVisualElementRenderer oldRenderer = null, RendererPool pool = null, bool sameChildren = false)
        {
            Performance.Start();

            if (CompressedLayout.GetIsHeadless(view))
            {
                var packager = new VisualElementPackager(_renderer, view);
                view.IsPlatformEnabled = true;
                packager.Load();
            }
            else
            {
                if (_childViews == null)
                {
                    _childViews = new List <IVisualElementRenderer>();
                }

                IVisualElementRenderer renderer = oldRenderer;
                if (pool != null)
                {
                    renderer = pool.GetFreeRenderer(view);
                }
                if (renderer == null)
                {
                    Performance.Start("New renderer");
                    renderer = Platform.CreateRenderer(view);
                    Performance.Stop("New renderer");
                }

                if (renderer == oldRenderer)
                {
                    Platform.SetRenderer(renderer.Element, null);
                    renderer.SetElement(view);
                }

                Performance.Start("Set renderer");
                Platform.SetRenderer(view, renderer);
                Performance.Stop("Set renderer");

                Performance.Start("Add view");
                if (!sameChildren)
                {
                    (_renderer.View as ViewGroup)?.AddView(renderer.View);
                    _childViews.Add(renderer);
                }
                Performance.Stop("Add view");
            }
            Performance.Stop();
        }
Ejemplo n.º 17
0
        public static IVisualElementRenderer CreateRenderer(VisualElement element, IVisualElementRenderer parent)
        {
            if (element == null)
            {
                throw new ArgumentNullException(nameof(element));
            }

            IVisualElementRenderer renderer = parent?.CreateChildRenderer(element);

            if (renderer == null)
            {
                renderer = Registrar.Registered.GetHandlerForObject <IVisualElementRenderer>(element) ?? new DefaultRenderer();
            }
            renderer.SetElement(element);
            return(renderer);
        }
Ejemplo n.º 18
0
        public IVisualElementRenderer GetFreeRenderer(VisualElement view)
        {
            if (view == null)
            {
                throw new ArgumentNullException("view");
            }
            Stack <IVisualElementRenderer> stack;

            if (!this.freeRenderers.TryGetValue(Registrar.Registered.GetHandlerType((view).GetType()) ?? typeof(ViewRenderer), out stack) || stack.Count == 0)
            {
                return((IVisualElementRenderer)null);
            }
            IVisualElementRenderer visualElementRenderer = stack.Pop();
            VisualElement          element = view;

            visualElementRenderer.SetElement(element);
            return(visualElementRenderer);
        }
Ejemplo n.º 19
0
        public float CalculateHeightForCell(FastListView.Forms.VisualElements.FastListView fastListView, ViewCell cell)
        {
            var target = cell.View;

            if (_renderer == null)
            {
                _renderer = Platform.CreateRendererWithContext(target, Android.App.Application.Context);
            }
            else
            {
                _renderer.SetElement(target);
            }

            Platform.SetRenderer(target, _renderer);

            var req = target.Measure(fastListView.Width, double.PositiveInfinity, MeasureFlags.IncludeMargins);

            return((float)req.Request.Height);
        }
        public nfloat CalculateHeightForCell(UICollectionView collectionView, ViewCell cell)
        {
            var target = cell.View;

            if (_renderer == null)
            {
                _renderer = Platform.CreateRenderer(target);
            }
            else
            {
                _renderer.SetElement(target);
            }

            Platform.SetRenderer(target, _renderer);

            var req = target.Measure(collectionView.Frame.Width, double.PositiveInfinity, MeasureFlags.IncludeMargins);

            return((nfloat)req.Request.Height);
        }
        void AddChild(VisualElement view, IVisualElementRenderer oldRenderer = null, RendererPool pool = null, bool sameChildren = false)
        {
            Performance.Start();

            if (_childViews == null)
            {
                _childViews = new List <IVisualElementRenderer>();
            }

            IVisualElementRenderer renderer = oldRenderer;

            if (pool != null)
            {
                renderer = pool.GetFreeRenderer(view);
            }
            if (renderer == null)
            {
                Performance.Start("New renderer");
                renderer = Platform.CreateRenderer(view);
                Performance.Stop("New renderer");
            }

            if (renderer == oldRenderer)
            {
                Platform.SetRenderer(renderer.Element, null);
                renderer.SetElement(view);
            }

            Performance.Start("Set renderer");
            Platform.SetRenderer(view, renderer);
            Performance.Stop("Set renderer");

            Performance.Start("Add view");
            if (!sameChildren)
            {
                _renderer.ViewGroup.AddView(renderer.ViewGroup);
                _childViews.Add(renderer);
            }
            Performance.Stop("Add view");

            Performance.Stop();
        }
Ejemplo n.º 22
0
        public IVisualElementRenderer GetFreeRenderer(VisualElement view)
        {
            if (view == null)
            {
                throw new ArgumentNullException("view");
            }

            Type rendererType = Registrar.Registered.GetHandlerType(view.GetType()) ?? typeof(ViewRenderer);

            Stack <IVisualElementRenderer> renderers;

            if (!_freeRenderers.TryGetValue(rendererType, out renderers) || renderers.Count == 0)
            {
                return(null);
            }

            IVisualElementRenderer renderer = renderers.Pop();

            renderer.SetElement(view);
            return(renderer);
        }
Ejemplo n.º 23
0
        public static IVisualElementRenderer CreateRenderer(VisualElement element, IVisualElementRenderer parent)
        {
            if (element == null)
            {
                throw new ArgumentNullException(nameof(element));
            }

            IVisualElementRenderer renderer = parent?.CreateChildRenderer(element);

            if (renderer == null)
            {
                // a page is not a view

                /* if (element is Page)
                 *   renderer = new PageRenderer<Page, Control>();
                 * else*/
                renderer = Registrar.Registered.GetHandlerForObject <IVisualElementRenderer>(element) ??
                           new DefaultRenderer();
            }
            renderer.SetElement(element);
            return(renderer);
        }