示例#1
0
        protected override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            if (AllowShadows)
            {
                FrameworkElement tb = (FrameworkElement)this.GetTemplateChild("TitleBackground");
                FrameworkElement cr = (FrameworkElement)this.GetTemplateChild("ContentRoot");
                CompositionFactory.SetThemeShadow(cr, 40, tb);
            }

            if (this.GetTemplateChild("BtnClose") is Button close)
            {
                close.Click -= Close_Click;
                close.Click += Close_Click;
            }

            if (this.GetTemplateChild("TitleBackground") is FrameworkElement f && IsWindowRoot)
            {
                TitleBarHelper.SetTitleBar(f);
                CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
            }

            OnTitleContentChanged();
        }
示例#2
0
        void CreateBlurLayer()
        {
            var sprite = _rootVisual.Compositor.CreateSpriteVisual().LinkSize(this);

            sprite.Brush = CompositionFactory.CreateBlurEffectBrush(_rootVisual.Compositor, 5f);
            ShadowHost.GetContainerVisual().Children.InsertAtTop(sprite);
        }
示例#3
0
        public static void Main(string[] args)
        {
            var container = new UnityContainer();

            CompositionFactory.Compose(container);

            Proto.Core.CompositionFactory.Compose(container);

            new Application(Eto.Platforms.Wpf).Run(new MainForm(container.Resolve <IMainFormViewModel>(), container.Resolve <ILogViewerControlFactory>()));
        }
示例#4
0
        public static void Main(string[] args)
        {
            SpinMeStyles.Set(OS.Windows);

            var container = CompositionFactory.GetContainer();

            CompositionFactory.Compose(container);

            new Application(Eto.Platforms.Wpf).Run(new MainForm(container.Resolve <IPanelFactory>(), container.Resolve <IMainFormViewModel>()));
        }
示例#5
0
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 11; i++)
            {
                var panel = new StackPanel
                {
                    Orientation         = Orientation.Horizontal,
                    VerticalAlignment   = VerticalAlignment.Center,
                    HorizontalAlignment = HorizontalAlignment.Center
                };


                var heartLeft = new Image
                {
                    Height = 50,
                    Width  = 24,
                    Source = (SvgImageSource)this.Resources["LeftHeart"]
                };

                var heartRight = new Image
                {
                    Height = 50,
                    Width  = 24,
                    Source = (SvgImageSource)this.Resources["LeftHeart"],
                    RenderTransformOrigin = new Point(0.5, 0.5),
                    RenderTransform       = new CompositeTransform {
                        ScaleX = -1, ScaleY = 1
                    },
                    Margin = new Thickness(-1, 0, 0, 0)
                };

                panel.Children.Add(heartLeft);
                panel.Children.Add(heartRight);
                Root.Children.Add(panel);

                var c = CompositionFactory.CreateCenteringExpression(1, 0.5);

                //var hl = heartLeft.EnableCompositionTranslation().GetVisual();
                //hl.StartAnimation(c);
                //hl.StartAnimation(CreateFlap(heartLeft));

                //var hr = heartRight.EnableCompositionTranslation().GetVisual();
                //hr.StartAnimation(c);
                //hr.StartAnimation(CreateFlap(heartRight));

                panel.EnableCompositionTranslation();
                PlayDie(panel, _rand.Next(2, 30) / 100d);

                _ = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() =>
                {
                    await Task.Delay(1000);
                    Root.Children.Remove(panel);
                });
            }
        }
示例#6
0
        public SunsetView()
        {
            this.InitializeComponent();

            // 1. Init resources
            _rootVisual = this.GetVisual();
            _rand       = new Random();
            var c = _rootVisual.Compositor;

            // 2. Create Brushes
            _grad = c.CreateLinearGradientBrush();
            _grad.ColorStops.Add(c.CreateColorGradientStop(0, MediaExtensions.FromHex("#E500780A")));
            _grad.ColorStops.Add(c.CreateColorGradientStop(0.5f, MediaExtensions.FromHex("#E55D8200")));
            _grad.ColorStops.Add(c.CreateColorGradientStop(1, MediaExtensions.FromHex("#E55D780A")));
            _grad.StartPoint = new Vector2(0, 0);
            _grad.EndPoint   = new Vector2(0, 0.5f);

            _shad       = c.CreateColorBrush();
            _shad.Color = Color.FromArgb(100, 0, 0, 0);

            // 3. Create grass geometry & resources
            _geom        = c.CreateEllipseGeometry();
            _geom.Radius = new Vector2(4, 150);
            _geom.Center = new Vector2(4, 150);
            _cent        = CompositionFactory.CreateCenteringExpression(0.5, 0.5);

            _grassShape           = c.CreateSpriteShape(_geom);
            _grassShape.FillBrush = _grad;

            _shadowShape           = c.CreateSpriteShape(_geom);
            _shadowShape.FillBrush = _shad;

            _grassOffset = c.CreateExpressionAnimation()
                           .SetTarget("Offset")
                           .SetParameter("Root", _rootVisual)
                           .SetExpression("Vector3(Root.Size.X * percent, Root.Size.Y - (this.Target.Size.Y * 0.5f), 0f)");

            _shadowOffset = c.CreateExpressionAnimation()
                            .SetTarget(nameof(Visual.Offset))
                            .SetExpression("Caster.Offset");

            _shadowRotation = c.CreateExpressionAnimation()
                              .SetTarget(nameof(Visual.RotationAngleInDegrees))
                              .SetExpression("Caster.RotationAngleInDegrees");

            // 4. Create blades
            for (int i = 0; i < 250; i++)
            {
                PlantGrassSeed();
            }

            // 5. Create blur for shadow
            CreateBlurLayer();
        }
示例#7
0
        public ExportView(IPopoverPresenter presenter)
        {
            _presenter     = presenter;
            _fontMap       = presenter.GetFontMap();
            TitleBarHeight = presenter.GetTitleBarHeight();

            ViewModel = new ExportViewModel(_fontMap.ViewModel);

            this.InitializeComponent();

            CompositionFactory.SetupOverlayPanelAnimation(this);
            LeakTrackingService.Register(this);
        }
示例#8
0
        public ScalarKeyFrameAnimation CreateTranslationX(FrameworkElement e)
        {
            var v   = e.EnableCompositionTranslation().GetVisual();
            var cin = CompositionFactory.GetEasingFunction(v.Compositor, PennerType.Exponential, PennerVariation.EaseOut);

            var ani =
                v.CreateScalarKeyFrameAnimation("Translation.X")
                .AddKeyFrame(0f, 0)
                .AddKeyFrame(1f, _rand.Next(-200, 200), cin)
                .SetDuration(1);

            return(ani);
        }
示例#9
0
        public ScalarKeyFrameAnimation CreateTranslationY(FrameworkElement e)
        {
            var v = e.EnableCompositionTranslation().GetVisual();

            var t    = _rand.Next(-100, 0);
            var cin  = CompositionFactory.GetEasingFunction(v.Compositor, PennerType.Circle, PennerVariation.EaseIn);
            var cout = CompositionFactory.GetEasingFunction(v.Compositor, PennerType.Circle, PennerVariation.EaseIn);

            var ani =
                v.CreateScalarKeyFrameAnimation("Translation.Y")
                .AddKeyFrame(0f, 0)
                .AddKeyFrame(0.33f, t, cin)
                .AddKeyFrame(1f, _rand.Next(t, 10), cout)
                .SetDuration(1);

            return(ani);
        }
示例#10
0
        private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
            case nameof(ViewModel.GroupedFontList):
                if (ViewModel.IsLoadingFonts)
                {
                    return;
                }

                if (ViewModel.Settings.UseSelectionAnimations &&
                    !ViewModel.IsSearchResults)
                {
                    CompositionFactory.PlayEntrance(LstFontFamily, 66, 100);
                    CompositionFactory.PlayEntrance(GroupLabel, 0, 0, 80);
                    if (InlineLabelCount.Visibility == Visibility.Visible)
                    {
                        CompositionFactory.PlayEntrance(InlineLabelCount, 83, 0, 80);
                    }
                }
                break;

            case nameof(ViewModel.SelectedFont):
                if (ViewModel.SelectedFont != null)
                {
                    LstFontFamily.SelectedItem = ViewModel.SelectedFont;
                    FontMap.PlayFontChanged();
                }
                break;

            case nameof(ViewModel.FontSearch):
            case nameof(ViewModel.IsSearchResults):
                // Required to prevent crash with SemanticZoom when there
                // are no items in the results list
                if (!FontsSemanticZoom.IsZoomedInViewActive)
                {
                    FontsSemanticZoom.IsZoomedInViewActive = true;
                }
                break;

            case nameof(ViewModel.IsLoadingFonts):
            case nameof(ViewModel.IsLoadingFontsFailed):
                UpdateLoadingStates();
                break;
            }
        }
示例#11
0
        private void PaneRoot_Loaded(object sender, RoutedEventArgs e)
        {
            var f = (UIElement)sender;

            ElementCompositionPreview.SetIsTranslationEnabled(f, true);
            Visual v = ElementCompositionPreview.GetElementVisual(f);

            ElementCompositionPreview.SetImplicitHideAnimation(f, CompositionFactory.CreateSlideOut(f, -256, 0));

            var o2 = v.Compositor.CreateVector3KeyFrameAnimation();

            o2.Target = "Translation";
            o2.InsertExpressionKeyFrame(0, "this.StartingValue");
            o2.InsertKeyFrame(1, new System.Numerics.Vector3(0, 0, 0));
            o2.Duration = TimeSpan.FromSeconds(CompositionFactory.DefaultOffsetDuration);

            ElementCompositionPreview.SetImplicitShowAnimation(f, o2);
        }
示例#12
0
        private void UpdateLoadingStates()
        {
            TitleBar.TryUpdateMetrics();

            if (ViewModel.IsLoadingFonts && !ViewModel.IsLoadingFontsFailed)
            {
                VisualStateManager.GoToState(this, nameof(FontsLoadingState), true);
            }
            else if (ViewModel.IsLoadingFontsFailed)
            {
                VisualStateManager.GoToState(this, nameof(FontsFailedState), true);
            }
            else
            {
                VisualStateManager.GoToState(this, nameof(FontsLoadedState), false);
                if (ViewModel.Settings.UseSelectionAnimations)
                {
                    CompositionFactory.StartStartUpAnimation(
                        new List <FrameworkElement>
                    {
                        OpenFontPaneButton,
                        FontListFilter,
                        OpenFontButton,
                        FontMap.FontTitleBlock,
                        FontMap.SearchBox,
                        BtnSettings
                    },
                        new List <UIElement>
                    {
                        FontListSearchBox,
                        FontsSemanticZoom,
                        FontMap.CharGridHeader,
                        FontMap.SplitterContainer,
                        FontMap.CharGrid,
                        FontMap.PreviewGrid
                    });
                }
            }
        }
示例#13
0
        private void ViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (e.PropertyName == nameof(ViewModel.FontList))
            {
                if (ViewStates.CurrentState != NormalState)
                {
                    GoToNormalState();
                }

                CompositionFactory.PlayEntrance(Repeater, 0, 80, 0);

                // ItemsRepeater is a bit rubbish, needs to be nudged back into life.
                // If we scroll straight to zero, we can often end up with a blank screen
                // until the user scrolls. So we need to manually hack in a scroll ourselves.
                //ListingScroller.ChangeView(null, 2, null, true);
                //_ = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
                //{
                //    await Task.Delay(16);
                //    ListingScroller?.ChangeView(null, 0, null, false);
                //});
            }
            else if (e.PropertyName == nameof(ViewModel.SelectedFont))
            {
                if (ViewModel.SelectedFont is null)
                {
                    GoToNormalState();
                }
                else
                {
                    DetailsFontTitle.Text = "";
                    VisualStateManager.GoToState(this, DetailsState.Name, true);
                }
            }
            else if (e.PropertyName == nameof(ViewModel.Text))
            {
                UpdateText(ViewModel.Text);
            }
        }
示例#14
0
        private void StartShowAnimation()
        {
            if (!CompositionFactory.UISettings.AnimationsEnabled)
            {
                this.GetElementVisual().Opacity = 1;
                this.GetElementVisual().Properties.InsertVector3(CompositionFactory.TRANSLATION, Vector3.Zero);
                return;
            }

            List <UIElement> elements = new() { this };

            elements.AddRange(OptionsPanel.Children);
            CompositionFactory.PlayEntrance(elements, 0, 200);

            elements.Clear();
            elements.AddRange(PreviewOptions.Children);
            elements.Add(PreviewContainer);
            CompositionFactory.PlayEntrance(elements, 0, 200);

            elements.Clear();
            elements.Add(BottomLabel);
            elements.AddRange(BottomButtonOptions.Children);
            CompositionFactory.PlayEntrance(elements, 0, 200);
        }
示例#15
0
 private void ContentRoot_Loaded(object sender, RoutedEventArgs e)
 {
     CompositionFactory.SetStandardReposition(sender, e);
 }
示例#16
0
 public static IComposition Composition() => CompositionFactory.Create(CompositionName);