Example #1
0
 protected override void OnMouseMove(MouseEventArgs e)
 {
     base.OnMouseMove(e);
     if (IsPanning)
     {
         e.Handled = true;
         var delta = LastPanPos - LayoutTransform.Transform(e.GetPosition(this));
         Scroller.ScrollToHorizontalOffset(Scroller.HorizontalOffset + delta.X);
         Scroller.ScrollToVerticalOffset(Scroller.VerticalOffset + delta.Y);
     }
     if (TempLine.Visibility == Visibility.Visible)
     {
         e.Handled = true;
         if (StartNode.Node.GetConnectionType() == INodeConnectionType.INPUT)
         {
             TempLine.Redraw(e.GetPosition(this), ConnectionStartPos);
             TempLine.SetCanvasPos(e.GetPosition(this), ConnectionStartPos);
         }
         else
         {
             TempLine.Redraw(ConnectionStartPos, e.GetPosition(this));
             TempLine.SetCanvasPos(ConnectionStartPos, e.GetPosition(this));
         }
     }
 }
		public void ToRoot()
		{
			LayoutTransform transform = new LayoutTransform(2, 3, 96, 96);
			Point p = new Point(10,15);
			Point p2 = transform.ToRoot(p);
			Assert.AreEqual(12, p2.X);
			Assert.AreEqual(18, p2.Y);
		}
        public void ToRoot()
        {
            LayoutTransform transform = new LayoutTransform(2, 3, 96, 96);
            Point           p         = new Point(10, 15);
            Point           p2        = transform.ToRoot(p);

            Assert.AreEqual(12, p2.X);
            Assert.AreEqual(18, p2.Y);
        }
 private void SafeCheck(GameObject layout)
 {
     if (!layout.transform.GetComponent <CanvasGroup>())
     {
         throw new Exception("Invalid Tooltip Layout! Prefab needs to have CanvasGroup component");
     }
     else if (!LayoutTransform.GetComponent <Image>())
     {
         throw new Exception("Invalid Tooltip Layout! LayoutTransform(child of canvas) needs to have Image component");
     }
 }
        public void MpToPixels()
        {
            LayoutTransform transform = new LayoutTransform(2, 3, 96, 120);
            int             dx        = transform.MpToPixelsX(72000);

            Assert.AreEqual(96, dx);
            int dy = transform.MpToPixelsY(36000);

            Assert.AreEqual(60, dy);
            // Just a little larger should round down
            dx = transform.MpToPixelsX(72005);
            Assert.AreEqual(96, dx);
            // More than half a pixel larger should round up.
            dx = transform.MpToPixelsX(72376);
            Assert.AreEqual(97, dx);
            // Close to half should round down
            dx = transform.MpToPixelsX(72373);
            Assert.AreEqual(96, dx);
            // Should work with negative numbers too.
            dx = transform.MpToPixelsX(-72376);
            Assert.AreEqual(-97, dx);
            // Close to half should round down
            dx = transform.MpToPixelsX(-72373);
            Assert.AreEqual(-96, dx);
            // Less than a half pix rounds down to zero
            dx = transform.MpToPixelsX(373);
            Assert.AreEqual(0, dx);
            // More than a half pix rounds up
            dx = transform.MpToPixelsX(377);
            Assert.AreEqual(1, dx);
            dx = transform.MpToPixelsX(-373);
            Assert.AreEqual(0, dx);

            // When computing the thickness of a border, we get similar results except
            // we never round down to zero.
            dx = transform.MpToBorderPixelsX(373);
            Assert.AreEqual(1, dx);
            dx = transform.MpToBorderPixelsX(377);
            Assert.AreEqual(1, dx);
            dx = transform.MpToBorderPixelsX(72373);
            Assert.AreEqual(96, dx);
            dx = transform.MpToBorderPixelsX(-373);
            Assert.AreEqual(-1, dx);
            dy = transform.MpToBorderPixelsY(380);
            Assert.AreEqual(1, dy);
        }
        protected sealed override Size MeasureCore(Size availableSize)
        {
            var size = MeasureOverride(availableSize);

            var height = HeightRequest ?? size.Height;
            var width  = WidthRequest ?? size.Width;

            if (LayoutTransform != null)
            {
                savedSize = size;

                size   = LayoutTransform.TransformBounds(new Rect(0, 0, width, height)).Size;
                height = size.Height;
                width  = size.Width;
            }

            return(new Size(width, height));
        }
        public override void Render(RenderContext parentRenderContext)
        {
            Effect effect = Effect;

            if (!IsVisible || effect == null)
            {
                return;
            }

            RectangleF bounds = ActualBounds;

            if (bounds.Width <= 0 || bounds.Height <= 0)
            {
                return;
            }

            Matrix?layoutTransformMatrix = LayoutTransform == null ? new Matrix?() : LayoutTransform.GetTransform();
            Matrix?renderTransformMatrix = RenderTransform == null ? new Matrix?() : RenderTransform.GetTransform();

            RenderContext localRenderContext = parentRenderContext.Derive(bounds, layoutTransformMatrix, renderTransformMatrix, RenderTransformOrigin, Opacity);

            _inverseFinalTransform = Matrix.Invert(localRenderContext.Transform);

            DeviceEx           device      = SkinContext.Device;
            Surface            backBuffer  = device.GetRenderTarget(0);
            SurfaceDescription desc        = backBuffer.Description;
            SurfaceDescription?textureDesc = _texture == null ? new SurfaceDescription?() : _texture.GetLevelDescription(0);

            if (!textureDesc.HasValue || textureDesc.Value.Width != desc.Width || textureDesc.Value.Height != desc.Height)
            {
                TryDispose(ref _texture);
                _texture = new Texture(device, desc.Width, desc.Height, 1, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default);
            }
            using (Surface destSurfaceRef = _texture.GetSurfaceLevel(0))
                device.StretchRectangle(backBuffer, destSurfaceRef, TextureFilter.None);

            UpdateEffectMask(effect, localRenderContext.OccupiedTransformedBounds, desc.Width, desc.Height, localRenderContext.ZOrder);
            if (effect.BeginRender(_texture, new RenderContext(Matrix.Identity, 1.0d, bounds, localRenderContext.ZOrder)))
            {
                _effectContext.Render(0);
                effect.EndRender();
            }
            backBuffer.Dispose();
        }
		public void MpToPixels()
		{
			LayoutTransform transform = new LayoutTransform(2, 3, 96, 120);
			int dx = transform.MpToPixelsX(72000);
			Assert.AreEqual(96, dx);
			int dy = transform.MpToPixelsY(36000);
			Assert.AreEqual(60, dy);
			// Just a little larger should round down
			dx = transform.MpToPixelsX(72005);
			Assert.AreEqual(96, dx);
			// More than half a pixel larger should round up.
			dx = transform.MpToPixelsX(72376);
			Assert.AreEqual(97, dx);
			// Close to half should round down
			dx = transform.MpToPixelsX(72373);
			Assert.AreEqual(96, dx);
			// Should work with negative numbers too.
			dx = transform.MpToPixelsX(-72376);
			Assert.AreEqual(-97, dx);
			// Close to half should round down
			dx = transform.MpToPixelsX(-72373);
			Assert.AreEqual(-96, dx);
			// Less than a half pix rounds down to zero
			dx = transform.MpToPixelsX(373);
			Assert.AreEqual(0, dx);
			// More than a half pix rounds up
			dx = transform.MpToPixelsX(377);
			Assert.AreEqual(1, dx);
			dx = transform.MpToPixelsX(-373);
			Assert.AreEqual(0, dx);

			// When computing the thickness of a border, we get similar results except
			// we never round down to zero.
			dx = transform.MpToBorderPixelsX(373);
			Assert.AreEqual(1, dx);
			dx = transform.MpToBorderPixelsX(377);
			Assert.AreEqual(1, dx);
			dx = transform.MpToBorderPixelsX(72373);
			Assert.AreEqual(96, dx);
			dx = transform.MpToBorderPixelsX(-373);
			Assert.AreEqual(-1, dx);
			dy = transform.MpToBorderPixelsY(380);
			Assert.AreEqual(1, dy);
		}
Example #9
0
        private void InitializeLayout()
        {
            try
            {
                LayoutTransform = UIWindow.transform.GetChild(0);
            }
            catch (Exception)
            {
                Debug.LogError("You should have child transform on your prefab!");
            }
            SafeCheck(LayoutTransform);

            LayoutRectTransform   = LayoutTransform.GetComponent <RectTransform>();
            UIWindowRectTransform = UIWindow.GetComponent <RectTransform>();
            CanvasGroup           = UIWindow.GetComponent <CanvasGroup>();
            Images  = Initialize(LayoutTransform.GetChild(0), Images);
            Buttons = Initialize(LayoutTransform.GetChild(1), Buttons);
            Texts   = Initialize(LayoutTransform.GetChild(2), Texts);
        }
Example #10
0
        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
        {
            base.OnMouseLeftButtonDown(e);
            e.Handled = true;
            // Keyboard.ClearFocus();
            //IsPanning = true; //TODO:
            LastPanPos = LayoutTransform.Transform(e.GetPosition(this));

            //Added by Shakeel to set a module inactive
            if (e.OriginalSource == this)
            {
                var activeModule = this.Children.OfType <CanvasModule>().FirstOrDefault(x => x.IsActive);

                if (activeModule != null)
                {
                    activeModule.IsActive = false;
                }
            }
        }