public void RemoveEffect(IOverlayInfo overlayInfo, Size?defaultOverlaySize, OverlayEffectConfiguration config) { var overlaySize = overlayInfo?.OverlaySize; overlaySize = overlaySize ?? defaultOverlaySize; EndEffect(overlayInfo, overlaySize.Value, config); }
public void ApplyEffect(IOverlayInfo overlayInfo, Size?defaultOverlaySize, OverlayEffectConfiguration config) { //validate var overlaySize = overlayInfo?.OverlaySize; overlaySize = overlaySize ?? defaultOverlaySize; if (overlaySize == null) { return; } StartEffect(overlayInfo, overlaySize.Value, config); }
protected override void StartEffect(IOverlayInfo overlayInfo, Size overlaySize, OverlayEffectConfiguration config) { //validate var settings = config as ToolTipEffect; if (settings == null) { return; } if (settings.Template == null) { return; } _overlaySize = overlaySize; _overlayRect = overlayInfo?.Rect; _overlayPolygon = overlayInfo?.Entity as PolygonInfo; var tooltip = overlayInfo?.ToolTip; if (tooltip != null) { //end current tooltip if (_currentOverlayInfo != null) { EndEffect(_currentOverlayInfo, overlaySize, config); } //create template var toolTipControl = settings.Template.LoadContent() as FrameworkElement; toolTipControl.DataContext = tooltip; toolTipControl.Loaded += ToolTipControl_Loaded; if (settings.ToolTipMode == ToolTipMode.Extended) { var panel = new StackPanel() { Background = Application.Current.Resources["SystemControlBackgroundChromeMediumLowBrush"] as Brush, BorderBrush = Application.Current.Resources["SystemControlForegroundChromeHighBrush"] as Brush, BorderThickness = new Thickness(1) }; ImageSource imageSource = (OverlayPresenter as OverlayPresenter)?.Source; if (imageSource != null) { _image = new Image() { Source = imageSource, Width = (double)(imageSource as BitmapImage)?.PixelWidth, Height = (double)(imageSource as BitmapImage)?.PixelHeight }; _imageView = new Viewbox() { Child = _image, Stretch = Stretch.None }; _view = new Viewbox { Child = _imageView }; panel.Children.Add(_view); } panel.Children.Add(toolTipControl); _popup.Child = panel; } else { _popup.Child = toolTipControl; } //show popup _popup.IsOpen = true; _currentOverlayInfo = overlayInfo; } }
public override bool?ShouldApply(IOverlayInfo overlayInfo, Size?overlaySize, OverlayInfoState state, OverlayEffectConfiguration config, bool presenterSelected) { _presenterSelected = presenterSelected; _toolTipMode = (config as ToolTipEffect)?.ToolTipMode ?? ToolTipMode.Standard; return(state == OverlayInfoState.Selected && (presenterSelected || _toolTipMode == ToolTipMode.Extended)); }
protected override void EndEffect(IOverlayInfo overlayInfo, Size?overlaySize, OverlayEffectConfiguration config) { //remove popup if (_currentOverlayInfo == overlayInfo) { if (_popup.IsOpen) { _popup.IsOpen = false; } _currentOverlayInfo = null; } }
protected override void StartEffect(IOverlayInfo overlayInfo, Size overlaySize, OverlayEffectConfiguration config) { //validate var settings = config as ZoomEffect; if (settings == null) { return; } //start new movement var zoom = 1d; var focus = new Point(); if (overlayInfo != null) { var bounds = overlayInfo.Rect; //calculate zoom var viewerRatio = OverlayPresenter.RenderSize.Width / OverlayPresenter.RenderSize.Height; var boundRatio = bounds.Width / bounds.Height; if (viewerRatio < boundRatio) { //zoom by width zoom = OverlayPresenter.RenderSize.Width / bounds.Width; } else { //zoom by height zoom = OverlayPresenter.RenderSize.Height / bounds.Height; } zoom = Math.Min(zoom, settings.MaxZoom); //max zoom zoom = Math.Max(zoom, settings.MinZoom); //min zoom //focus on center var boundCenter = new Point(bounds.Left + (bounds.Width / 2), bounds.Top + (bounds.Height / 2)); var target = TransformPoint(boundCenter, overlaySize); var viewerCenter = new Point(OverlayPresenter.RenderSize.Width / 2, OverlayPresenter.RenderSize.Height / 2); focus = new Point(-(target.X * zoom) + viewerCenter.X, -(target.Y * zoom) + viewerCenter.Y); } _animations[2] = _animations[0]; _animations[3] = _animations[1]; _animations[0] = new ScaleTransformAnimation(zoom, zoom, settings.Duration, BaseAnimation.DefaultInOut); _animations[1] = new TranslateTransformAnimation(focus.X, focus.Y, settings.Duration, BaseAnimation.DefaultInOut); _animations[0].Activate(OverlayPresenter); _animations[1].Activate(OverlayPresenter); }
public override bool?ShouldApply(IOverlayInfo overlayInfo, Size?overlaySize, OverlayInfoState state, OverlayEffectConfiguration config, bool presenterSelected) { //only works when not selected from the image if (!presenterSelected) { return(state == OverlayInfoState.Selected); } return(null); }
protected override void EndEffect(IOverlayInfo overlayInfo, Size?overlaySize, OverlayEffectConfiguration config) { StartEffect(null, overlaySize.GetValueOrDefault(), config); }
public abstract bool?ShouldApply(IOverlayInfo overlayInfo, Size?overlaySize, OverlayInfoState state, OverlayEffectConfiguration config, bool presenterSelected);
protected abstract void EndEffect(IOverlayInfo overlayInfo, Size?overlaySize, OverlayEffectConfiguration config);