public void DoRender()
        {
            if (_viewHost.View == null || !DoPreRender())
            {
                return;
            }

            var view = _viewHost.View;

            //Measure
            var available = new ValueRenderSize(_context.Size);

            if (available.IsEmpty)
            {
                return;
            }
            //_measureContext.ViewState = _viewHost;
            //_measureContext.UpdateContextBounds(available);
            var desired = _measureContext.MeasureMainView(view, available, _viewHost);

            _renderRect.Size = desired;

            //arrange
            //_renderContext.ViewState = _viewHost;
            //----------------------------
            _renderContext.DrawMainElement(view, _renderRect, _viewHost);
            //----------------------------
//            var _pen = new Pen(Color.White, 2);
//            _renderContext.DrawLine(_pen, new Point(10, 10), new Point(50, 50));
            //----------------------------
            DoPostRender();
        }
        private void OnRendering(Object sender, EventArgs e)
        {
            _sbSelected.Clear();
            _isChanged = false;

            var element = _viewHost.View;

            //MeasureContext.ViewState = _viewHost;
            var size = new ValueRenderSize(_viewHost.RenderMargin.Width,
                                           _viewHost.RenderMargin.Height);

            var measured = MeasureContext.MeasureMainView(element, size,
                                                          _viewHost);
            var selectedVisual = SelectedVisuals?.FirstOrDefault();

            if (selectedVisual == null)
            {
                return;
            }

            _sbSelected.AppendLine(element.ToString());
            _sbSelected.AppendLine("Measured: " + measured);
            _sbSelected.AppendLine("Arranged: " + selectedVisual.Position);

            var nonDefaults = GetNonDefaultSetters(element).ToArray();

            foreach (var kvp in nonDefaults)
            {
                _sbSelected.AppendLine(kvp.ToString());
            }
            //_sbSelected.AppendLine(kvp.Key + ": " + kvp.Value);


            _rightRectangle = new Rectangle(_viewHost.AvailableSize.Width -
                                            _viewHost.RenderMargin.Right,
                                            0, _viewHost.RenderMargin.Width, _viewHost.AvailableSize.Height);
            //RenderContext.ViewState = _viewHost;
            RenderContext.FillRectangle(_rightRectangle, SolidColorBrush.DarkGray);

            if (selectedVisual.Element == null)
            {
                return;
            }


            RenderContext.DrawString(_sbSelected.ToString(), _font,
                                     _rightRectangle, SolidColorBrush.White);
        }
        public static Bitmap?DoRender(IVisualElement view,
                                      StaticGdiRenderKit renderKit,
                                      Color?backgroundColor,
                                      Double dpi,
                                      ValueRenderSize availableSize,
                                      IColorPalette colorPalette)
        {
            var viewState = new StaticViewState(dpi, colorPalette);


            var desired = renderKit.MeasureContext.MeasureMainView(view, availableSize,
                                                                   viewState);

            if (!desired.IsValid)
            {
                return(default);
Exemple #4
0
        protected override void OnMeasure(Int32 widthMeasureSpec,
                                          Int32 heightMeasureSpec)
        {
            base.OnMeasure(widthMeasureSpec, heightMeasureSpec);
            var w = MeasuredWidth;
            var h = MeasuredHeight;

            var sz = new ValueRenderSize(w, h);

            _measureContext.MeasureMainView(_view, sz, _viewState);

            _targetRect = new ValueRectangle(
                0, // X
                0, // Y
                sz.Width / _viewState.ZoomLevel,
                sz.Height / _viewState.ZoomLevel);
        }
Exemple #5
0
        protected override void OnMeasure(Int32 widthMeasureSpec,
                                          Int32 heightMeasureSpec)
        {
            base.OnMeasure(widthMeasureSpec, heightMeasureSpec);
            var w = MeasuredWidth;
            var h = MeasuredHeight;

            var sz = new ValueRenderSize(w, h);

            _targetRect = new ValueRectangle(
                0, // X
                0, // Y
                sz.Width / ZoomLevel,
                sz.Height / ZoomLevel);

            var count = ChildCount;

            for (var c = 0; c < count; c++)
            {
                var current = GetChildAt(c);

                if (current is IVisualSurrogate)
                {
                    current.Measure(Convert.ToInt32(_targetRect.Width),
                                    Convert.ToInt32(_targetRect.Height));
                }
                else
                {
                    current?.Measure(widthMeasureSpec, heightMeasureSpec);
                }
            }

            _measured = new ValueSize(sz.Width, sz.Height);
            RenderKit.MeasureContext.MeasureMainView(_view, sz, _viewState);

            if (_refreshLoopCount == 0)
            {
                _refreshLoopCount++;
                var _ = RefreshLoop();
            }
        }
Exemple #6
0
        public ValueSize MeasureMainView <TRenderSize>(IVisualElement element,
                                                       TRenderSize availableSpace,
                                                       IViewState viewState)
            where TRenderSize : IRenderSize
        {
            //Debug.WriteLine("********** BEGIN MEASURE ***********");

            ViewState = viewState;

            if (viewState.ZoomLevel.AreDifferent(1.0))
            {
                var zoomWidth  = availableSpace.Width / viewState.ZoomLevel;
                var zoomHeight = availableSpace.Height / viewState.ZoomLevel;

                if (_contextBounds.Width.AreDifferent(zoomWidth) ||
                    _contextBounds.Height.AreDifferent(zoomHeight))
                {
                    _contextBounds = new ValueSize(zoomWidth, zoomHeight);
                }

                var availableSpace2 = new ValueRenderSize(zoomWidth, zoomHeight, availableSpace.Offset);

                //Debug.WriteLine("********** END MEASURE ***********");
                return(MeasureElement(element, availableSpace2));
            }

            if (_contextBounds.Width.AreDifferent(availableSpace.Width) ||
                _contextBounds.Height.AreDifferent(availableSpace.Height))
            {
                _contextBounds = new ValueSize(availableSpace);
            }

            var res = MeasureElement(element, availableSpace);

            //Debug.WriteLine("********** END MEASURE ***********");
            return(res);
        }