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(); }
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); }
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; } } }