private static void PerformResolutionPreviewOperation(ResolutionPreview resolutionPreview, bool requiredSave = true)
 {
     using (Document.Current.History.BeginTransaction()) {
         ResolutionPreviewOperation.Perform(resolutionPreview, requiredSave);
         Document.Current.History.CommitTransaction();
     }
 }
        public static void Execute(Document document, ResolutionPreview resolutionPreview)
        {
            if (!resolutionPreview.Enabled && !document.ResolutionPreview.Enabled)
            {
                return;
            }
            if (!(document.RootNode is Widget))
            {
                if (document.ResolutionPreview.Enabled)
                {
                    resolutionPreview.Enabled = false;
                    PerformResolutionPreviewOperation(resolutionPreview);
                }
                return;
            }

            var requiredSave = true;

            if (resolutionPreview.Enabled)
            {
                if (resolutionPreview.Preset == null)
                {
                    resolutionPreview.Preset     = ProjectPreferences.Instance.Resolutions.First();
                    resolutionPreview.IsPortrait = !ProjectPreferences.Instance.IsLandscapeDefault;
                }
            }
            else
            {
                resolutionPreview.Preset     = ProjectPreferences.Instance.Resolutions.First();
                resolutionPreview.IsPortrait = !ProjectPreferences.Instance.IsLandscapeDefault;
                requiredSave = false;
            }
            PerformResolutionPreviewOperation(resolutionPreview, requiredSave);
            Application.InvalidateWindows();
        }
            private static void ApplyResolutionPreset(ResolutionPreview resolutionPreview, bool requiredSave)
            {
                if (!(Document.Current.RootNode is Widget rootNode))
                {
                    return;
                }
                ResolutionPreviewMode = resolutionPreview.Enabled;
                if (requiredSave)
                {
                    Document.Current.ResolutionPreview = resolutionPreview;
                }

                var     defaultResolution = ProjectPreferences.Instance.DefaultResolution;
                Vector2 resolution;

                if (resolutionPreview.IsPortrait)
                {
                    resolution = new Vector2(
                        defaultResolution.LandscapeValue.Y,
                        defaultResolution.LandscapeValue.Y * (resolutionPreview.Preset.LandscapeValue.X / resolutionPreview.Preset.LandscapeValue.Y)
                        );
                }
                else
                {
                    resolution = new Vector2(
                        defaultResolution.LandscapeValue.Y * (resolutionPreview.Preset.LandscapeValue.X / resolutionPreview.Preset.LandscapeValue.Y),
                        defaultResolution.LandscapeValue.Y
                        );
                }
                rootNode.Size = resolution;
                ApplyResolutionMarkers(rootNode, resolutionPreview.Preset, resolutionPreview.IsPortrait);
                ApplyLocalizationMarkers(rootNode);
            }
 public ResolutionPreviewOperation(ResolutionPreview resolutionPreview, bool requiredSave)
 {
     this.resolutionPreview = resolutionPreview;
     this.requiredSave      = requiredSave;
 }
 public static void Perform(ResolutionPreview resolutionPreview, bool requiredSave = true) =>
 DocumentHistory.Current.Perform(new ResolutionPreviewOperation(resolutionPreview, requiredSave));