getY() public method

Returns the Y position of the element's bottom edge
public getY ( ) : float
return float
Esempio n. 1
0
        public override void draw(Graphics graphics, float parentAlpha)
        {
            if (_widget == null)
            {
                return;
            }

            update();
            validate();

            // setup transform for this group.
            if (transform)
            {
                applyTransform(graphics, computeTransform());
            }

            if (_scrollX)
            {
                _hKnobBounds.X = _hScrollBounds.X + (int)((_hScrollBounds.Width - _hKnobBounds.Width) * getVisualScrollPercentX());
            }
            if (_scrollY)
            {
                _vKnobBounds.Y = _vScrollBounds.Y + (int)((_vScrollBounds.Height - _vKnobBounds.Height) * getVisualScrollPercentY());
            }

            // calculate the widget's position depending on the scroll state and available widget area.
            float eleY = _widgetAreaBounds.Y;

            if (!_scrollY)
            {
                eleY -= _maxY;
            }
            else
            {
                eleY -= _visualAmountY;
            }

            float eleX = _widgetAreaBounds.Y;

            if (_scrollX)
            {
                eleX -= (int)_visualAmountX;
            }

            if (!_fadeScrollBars && _scrollbarsOnTop)
            {
                if (_scrollX && _hScrollOnBottom)
                {
                    var scrollbarHeight = 0f;
                    if (_style.hScrollKnob != null)
                    {
                        scrollbarHeight = _style.hScrollKnob.minHeight;
                    }
                    if (_style.hScroll != null)
                    {
                        scrollbarHeight = Math.Max(scrollbarHeight, _style.hScroll.minHeight);
                    }
                    eleY += scrollbarHeight;
                }
                if (_scrollY && !_vScrollOnRight)
                {
                    var scrollbarWidth = 0f;
                    if (_style.hScrollKnob != null)
                    {
                        scrollbarWidth = _style.hScrollKnob.minWidth;
                    }
                    if (_style.hScroll != null)
                    {
                        scrollbarWidth = Math.Max(scrollbarWidth, _style.hScroll.minWidth);
                    }
                    eleX += scrollbarWidth;
                }
            }

            _widget.setPosition(eleX, eleY);

            if (_widget is ICullable)
            {
                var cull = new Rectangle(
                    (int)(-_widget.getX() + _widgetAreaBounds.X),
                    (int)(-_widget.getY() + _widgetAreaBounds.Y),
                    _widgetAreaBounds.Width,
                    _widgetAreaBounds.Height);
                ((ICullable)_widget).setCullingArea(cull);
            }

            // draw the background
            var color = getColor();

            color = new Color(color, (int)(color.A * parentAlpha));
            if (_style.background != null)
            {
                _style.background.draw(graphics, 0, 0, getWidth(), getHeight(), color);
            }

            // caculate the scissor bounds based on the batch transform, the available widget area and the camera transform. We need to
            // project those to screen coordinates for OpenGL to consume.
            var scissor = ScissorStack.calculateScissors(stage?.camera, graphics.batcher.transformMatrix, _widgetAreaBounds);

            if (ScissorStack.pushScissors(scissor))
            {
                graphics.batcher.enableScissorTest(true);
                drawChildren(graphics, parentAlpha);
                graphics.batcher.enableScissorTest(false);
                ScissorStack.popScissors();
            }

            // render scrollbars and knobs on top
            var alpha = (float)color.A;

            color.A = (byte)(alpha * (_fadeAlpha / _fadeAlphaSeconds));
            if (_scrollX && _scrollY)
            {
                if (_style.corner != null)
                {
                    _style.corner.draw(graphics, _hScrollBounds.X + _hScrollBounds.Width, _hScrollBounds.Y, _vScrollBounds.Width, _vScrollBounds.Y, color);
                }
            }
            if (_scrollX)
            {
                if (_style.hScroll != null)
                {
                    _style.hScroll.draw(graphics, _hScrollBounds.X, _hScrollBounds.Y, _hScrollBounds.Width, _hScrollBounds.Height, color);
                }
                if (_style.hScrollKnob != null)
                {
                    _style.hScrollKnob.draw(graphics, _hKnobBounds.X, _hKnobBounds.Y, _hKnobBounds.Width, _hKnobBounds.Height, color);
                }
            }
            if (_scrollY)
            {
                if (_style.vScroll != null)
                {
                    _style.vScroll.draw(graphics, _vScrollBounds.X, _vScrollBounds.Y, _vScrollBounds.Width, _vScrollBounds.Height, color);
                }
                if (_style.vScrollKnob != null)
                {
                    _style.vScrollKnob.draw(graphics, _vKnobBounds.X, _vKnobBounds.Y, _vKnobBounds.Width, _vKnobBounds.Height, color);
                }
            }

            if (transform)
            {
                resetTransform(graphics);
            }
        }