예제 #1
0
        public void Invalidate()
        {
            if (Settings.Width == 0)
            {
                Logger.Warning("Rendering", "AlphaTab skipped rendering because of width=0 (element invisible)");
                return;
            }
            BoundsLookup = new BoundsLookup();
            if (Tracks.Length == 0)
            {
                return;
            }

            RecreateCanvas();
            if (RenderingResources.Scale != Settings.Scale)
            {
                RenderingResources.Init(Settings.Scale);
                Canvas.LineWidth = Settings.Scale;
            }
            Canvas.Resources = RenderingResources;

            OnPreRender();
            RecreateLayout();
            LayoutAndRender();
            _renderedTracks = Tracks;
            Logger.Info("Rendering", "Rendering finished");
        }
예제 #2
0
        private void HandleWorkerMessage(DOMEvent e)
        {
            var data = e.As <MessageEvent>().data;
            var cmd  = data.Member("cmd").As <string>();

            switch (cmd)
            {
            case "alphaTab.preRender":
                OnPreRender(data.Member("result").As <RenderFinishedEventArgs>());
                break;

            case "alphaTab.partialRenderFinished":
                OnPartialRenderFinished(data.Member("result").As <RenderFinishedEventArgs>());
                break;

            case "alphaTab.renderFinished":
                OnRenderFinished(data.Member("result").As <RenderFinishedEventArgs>());
                break;

            case "alphaTab.postRenderFinished":
                BoundsLookup = BoundsLookup.FromJson(data.Member("boundsLookup"), _api.Score);
                OnPostRenderFinished();
                break;

            case "alphaTab.error":
                OnError(data.Member("type").As <string>(), data.Member("detail").As <Exception>());
                break;
            }
        }
예제 #3
0
        private void HandleWorkerMessage(Event e)
        {
            var    data = ((MessageEvent)e).Data;
            string cmd  = data.cmd;

            switch (cmd)
            {
            case "alphaTab.preRender":
                OnPreRender(data.result);
                break;

            case "alphaTab.partialRenderFinished":
                OnPartialRenderFinished(data.result);
                break;

            case "alphaTab.renderFinished":
                OnRenderFinished(data.result);
                break;

            case "alphaTab.postRenderFinished":
                BoundsLookup = BoundsLookup.FromJson(data.boundsLookup, _api.Score);
                OnPostRenderFinished();
                break;

            case "alphaTab.error":
                OnError(data.type, data.detail);
                break;
            }
        }
예제 #4
0
 private void HandleWorkerMessage(DOMEvent e)
 {
     var data = e.As<MessageEvent>().data;
     var cmd = data.Member("cmd").As<string>();
     switch (cmd)
     {
         case "alphaTab.preRender":
             OnPreRender(data.Member("result").As<RenderFinishedEventArgs>());
             break;
         case "alphaTab.partialRenderFinished":
             OnPartialRenderFinished(data.Member("result").As<RenderFinishedEventArgs>());
             break;
         case "alphaTab.renderFinished":
             OnRenderFinished(data.Member("result").As<RenderFinishedEventArgs>());
             break;
         case "alphaTab.postRenderFinished":
             BoundsLookup = BoundsLookup.FromJson(data.Member("boundsLookup"), Score);
             OnPostRenderFinished();
             break;
         case "alphaTab.error":
             console.error(data.Member("exception"));
             break;
         case "alphaTab.loaded":
             var score = data.Member("score").As<Score>();
             if (score.As<bool>())
             {
                 var jsonConverter = new JsonConverter();
                 score = jsonConverter.JsObjectToScore(score);
             }
             Score = score;
             OnLoaded(score);
             break;
     }
 }
예제 #5
0
 public void Destroy()
 {
     Score              = null;
     Canvas             = null;
     Layout             = null;
     RenderingResources = null;
     Settings           = null;
     BoundsLookup       = null;
     Tracks             = null;
 }
예제 #6
0
 public void Invalidate()
 {
     BoundsLookup = new BoundsLookup();
     if (Tracks.Length == 0)
     {
         return;
     }
     if (RenderingResources.Scale != Settings.Scale)
     {
         RenderingResources.Init(Settings.Scale);
         Canvas.LineWidth = Settings.Scale;
     }
     Canvas.Resources = RenderingResources;
     OnPreRender();
     RecreateLayout();
     LayoutAndRender();
 }
예제 #7
0
 public void Resize(int width)
 {
     if (RecreateLayout() || RecreateCanvas() || _renderedTracks != Tracks || Tracks == null)
     {
         Logger.Info("Rendering", "Starting full rerendering due to layout or canvas change");
         Invalidate();
     }
     else if (Layout.SupportsResize)
     {
         Logger.Info("Rendering", "Starting optimized rerendering for resize");
         BoundsLookup = new BoundsLookup();
         OnPreRender();
         Settings.Width = width;
         Layout.Resize();
         Layout.RenderAnnotation();
         OnRenderFinished();
         OnPostRender();
     }
     else
     {
         Logger.Warning("Rendering", "Current layout does not support dynamic resizing, nothing was done");
     }
     Logger.Info("Rendering", "Resize finished");
 }
예제 #8
0
 void Start()
 {
     Instance = this;
 }
 private void OnPostFinished(BoundsLookup boundsLookup)
 {
     BoundsLookup = boundsLookup;
     OnPostRenderFinished();
 }